/**

根据UDP协议,设计一个聊天程序,可以发送和接收,并有相应的图形化界面

*/

import java.net.*;

import java.awt.*;

import java.awt.event.*;

//发送信息

class ChatSend implements Runnable

{

private Button but; //发送按钮

private TextArea tain; //输入文本

private TextArea taout; //接收信息,并显示自己的信息

public ChatSend(Button but, TextArea tain, TextArea taout)

{

this.but = but;

this.tain = tain;

this.taout = taout;

}

public void run()

{

//添加按钮监听,发送数据

but.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent e)

{

try

{

//创建Socket服务

DatagramSocket SendSocket = new DatagramSocket();

//获取输入文本区域里的字符串

String line = tain.getText();

byte[] buf = line.getBytes();

//数据打包,发送

DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("10.22.72.144"), 4008);

SendSocket.send(dp);

tain.setText("");

taout.append(line +"\r\n");

SendSocket.close();

}

catch(Exception ex)

{

System.out.println(e.toString());

}

}

});

//文本框中输入回车键监听

tain.addKeyListener(new KeyAdapter()

{

public void keyPressed(KeyEvent e)

{

if(e.getKeyCode() == e.VK_ENTER)

{

try

{

//创建Socket服务

DatagramSocket SendSocket = new DatagramSocket();

//获取文本区域里的字符串

String line = tain.getText();

byte[] buf = line.getBytes();

//数据打包发送

DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("10.22.72.144"), 4008);

SendSocket.send(dp);

tain.setText("");

taout.append(line +"\r\n");

SendSocket.close();

}

catch(Exception ex)

{

System.out.println(e.toString());

}

}

}

});

}

}

//接收信息

class ChatReceive implements Runnable

{

private TextArea taout; //接收信息区域

public ChatReceive(TextArea taout)

{

this.taout = taout;

}

public void run()

{

while(true)

{

try

{

//创建Socket服务

DatagramSocket RecSocket = new DatagramSocket(5009);

//创建数据包,接收数据

byte[] buf = new byte[1024];

DatagramPacket dp = new DatagramPacket(buf, buf.length);

RecSocket.receive(dp);

//获取数据信息

String ip = dp.getAddress().getHostAddress();

String data = new String(dp.getData(), 0, dp.getLength());

//信息添加到文本区域

taout.append(ip +":"+data +"\r\n");

RecSocket.close();

}

catch(Exception ex)

{

System.out.println(ex.toString());

}

}

}

}

class Chat

{

public static void main(String[] args)

{

//设计图形化界面

Frame f = new Frame("我聊");

f.setSize(400, 400);

f.setLocation(300, 250);

f.setLayout(new FlowLayout());

//创建部件

TextArea tain = new TextArea();

TextArea taout = new TextArea();

Button but = new Button("发送");

taout.setColumns(50);

taout.setRows(18);

tain.setColumns(40);

tain.setRows(2);

f.add(taout);

f.add(tain);

f.add(but);

f.setVisible(true);

//窗口关闭监听

f.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

f.setVisible(false);

System.exit(0);

}

});

//创建并启动发送、接收线程

new Thread(new ChatSend(but, tain, taout)).start();

new Thread(new ChatReceive(taout)).start();

}

}

java带图形用户的聊天_java:带有图形化界面,可以发送和接收的聊天工具相关推荐

  1. 基于MFC框架的学生信息管理系统/学生成绩管理系统(带有图形化界面)

    系统背景: 本系统基于 Visual Studio2013的环境搭建,运用MFC框架对系统进行设计和实现,本系统带有图形化界面,具有常用的用户登录注册功能,对个人信息的增删改查功能,对成绩的增删改查功 ...

  2. java图形界面计算器_java实现图形化界面计算器

    本文实例为大家分享了java实现图形化界面计算器的具体代码,供大家参考,具体内容如下 最终效果图: 项目流程: 第一步:实现图形化界面(添加计算器的 Button 和 用于显示输入数字.输出结果的JT ...

  3. java 高级 图形化界面_java高级图形化界面

    java.awt.event.WindowAdapter 是一个接口 学生的答案: C 标准答案: C 该题分数:4.0 学生得分: 4.0 分 9. 在基于 Swing 的图形用户界面设计中,面板属 ...

  4. 用python模拟多人聊天服务器以及客户端(带图形化界面)

    所用python的知识点: 网络编程:socket 多线程:threading 图形化编程:tkinter 首先要模拟出一个服务器,以供客户端连接,注意这里的要用死循环,要让服务区一直处于开放的状态 ...

  5. centos运行java图形化界面_CentOS设置默认启动命令行(不启动图形界面)

    CentOS中如何进入图形界面和文字界面,Linux真正的服务器是不会运行图形化界面的,怎么样才能在不卸载桌面的前提下开机直接进入命令界面呢?(我安装的是CentOS 6.5)下面就简单介绍以下: 一 ...

  6. java界面化_java怎么实现图形化界面

    展开全部 java图形化界面还62616964757a686964616fe78988e69d8331333363373232是有很多内容要学习的,可以参考 如下实例:public class Tes ...

  7. Java图形化界面设计——容器(JFrame)

    Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构 ...

  8. Java图形化界面编程之——AWT

    目录 1.AWT简介 2.AWT继承体系 3.Container容器 3.1.Container继承体系 3.2.常用API 3.2.1.Component的常用方法 3.2.2.Container的 ...

  9. java图形化界面(GUI)

    java图形化界面(GUI) 一.AWT编程(抽象窗口工具集) 1.AWT继承体系 2.Container容器 2.1 Container继承体系 2.2 常见API 2.3 容器演示 2.3.1 w ...

最新文章

  1. 动画产业基础学习教程 Rad How to Class – Animation Industry Fundamentals
  2. 高效管理 Elasticsearch 中基于时间的索引——本质是在利用滚动模式做数据的冷热分离,热索引可以用ssd...
  3. Servlet的体系结构 || Servlet相关配置
  4. java 百亿计算器_设计一个一百亿的计算器
  5. 【PHP-FPM】配置,优化性能
  6. mysql 当前记录集不支持书签_存储过程 分页。当前记录集不支持书签。这可能是提供程序或选定的游标类型的限制。...
  7. 电脑所有程序里有不一样颜色_12个好玩的电脑屏保,让你成为别人眼中最靓的仔。...
  8. BBIAB的完整形式是什么?
  9. RSA加密算法简单分析
  10. nfs服务器_Kubernetes集群下部署NFS持久存储
  11. 和宝塔可以同时安装吗_服用钙拮抗剂可以同时补钙吗
  12. Windows 8连接*** 691错误解决办法
  13. mysql ssl编译_centos编译安装配置支持ssl加密的mysql replication
  14. Windows Phone 开发【MSDN参考文档 目录】
  15. 非线性系统的神经网络控制(常用介绍)--理论
  16. WordPress优化教程让WordPress打开速度更快
  17. 谷歌负载均衡Maglev实现简析
  18. Docker-docker-compose学习笔记(yaml,实战)
  19. android补间动画有哪几种,Android补间动画、属性动画 常用功能总结
  20. 刺沙冰雪高爆版辅助多开方案

热门文章

  1. 【Linux 】内核签名(签名内核模块)、linux 驱动签名、安装特定版本的 kernel-devel
  2. 智慧园区整体智能化管理平台规划方案
  3. 智能变电站测试关键技术
  4. tnpm的插件及使用
  5. 产品上新需要注意什么 总结的思维导图分享给大家
  6. npm link使用
  7. Visual Studio 2013运行C/C++程序
  8. Rust FFI 编程 - Bindgen 工具介绍
  9. Elasticsearch错误 “low disk watermark [85%]”或“high disk watermark [90%]”
  10. 立创商城的元器件库导入AD16(导入自己的库)