Socket网络编程(二)UDP协议实现聊天工具
2013-11-11 22:03
375 查看
实现功能如下:
在同一个窗口中实现聊天,可以选择发送的IP地址
![](https://img-blog.csdn.net/20131111220110187?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3V5YW54aWF4aWE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
这个程序实现分三个步骤:
1)实现图形用户界面
在eclipse中创建一个工程chat,创建一个chat类继承Frame类(实现聊天窗口)
2)编写网络消息发送功能
输入窗口中添加回车事件,然后把要发送的IP和信息发送出去
3)编写网络消息接收功能
使用线程,持续接收信息
实现代码+解释:
在同一个窗口中实现聊天,可以选择发送的IP地址
这个程序实现分三个步骤:
1)实现图形用户界面
在eclipse中创建一个工程chat,创建一个chat类继承Frame类(实现聊天窗口)
2)编写网络消息发送功能
输入窗口中添加回车事件,然后把要发送的IP和信息发送出去
3)编写网络消息接收功能
使用线程,持续接收信息
实现代码+解释:
package UDP_chat; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.List; import java.awt.Panel; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; class Chat extends Frame { List lst = new List(6); TextField tfIP = new TextField(15); TextField tfData = new TextField(20); DatagramSocket ds = null; public List setLst(String item,int index){ lst.add(item, index); return lst; } //构造函数里面实现窗口初始化、接收信息(线程)、发送信息 public Chat(){ try{ ds = new DatagramSocket(3000); }catch(Exception e){ e.printStackTrace(); } this.add(lst,"Center"); Panel p = new Panel(); this.add(p,"South"); p.setLayout(new BorderLayout()); p.add(tfIP,"West"); p.add(tfData,"East"); //接收信息:创建一个线程,一直在接收信息 new Thread(new Runnable(){ public void run(){ byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf,1024); //循环接收信息 while(true){ try{ ds.receive(dp); String haha = "消息:"+new String(dp.getData(),0,dp.getLength()) +" from "+dp.getAddress().getHostAddress() +":"+dp.getPort(); //将接收的信息打印到信息栏 lst.add(haha,0); }catch(Exception e){ //ds没有关闭才执行抛出异常 if(!ds.isClosed()){ e.printStackTrace(); } } } } }).start(); //发送消息:消息信息点回车,触发事件 tfData.addActionListener(new ActionListener(){ //需要实现此方法 public void actionPerformed(ActionEvent e){ byte [] buf; //获取消息信息 buf = tfData.getText().getBytes(); try{ //组装消息内容 DatagramPacket dp= new DatagramPacket(buf,buf.length, InetAddress.getByName(tfIP.getText()),3000); //发送消息 ds.send(dp); }catch(Exception ex){ ex.printStackTrace(); } tfData.setText(""); } }); //关闭窗口的触发事件,关闭ds addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ ds.close(); dispose(); System.exit(0); } }); } public static void main(String[] args){ //初始化窗口 Chat chat = new Chat(); chat.setSize(300,400); chat.setTitle("即时通讯"); chat.setVisible(true); chat.setResizable(false); } }
相关文章推荐
- 利用TCP和UDP协议,实现基于Socket的小聊天程序(初级版)
- 利用TCP和UDP协议,实现基于Socket的小聊天程序
- JAVA基础再回首(二十八)——网络编程概述、IP地址、端口号、TCP和UDP协议、Socket、UDP传输、多线程UDP聊天
- JAVA基础再回首(二十八)——网络编程概述、IP地址、端口号、TCP和UDP协议、Socket、UDP传输、多线程UDP聊天
- Android聊天工具基于socket实现
- Socket编程 消息传送 UDP协议(窗口实现) 服务器
- iOS- 移动端Socket UDP协议广播机制的实现
- socket编程 -- 基于UDP协议的C/S通信模型及实现
- 在Java中实现UDP协议编程(DatagramSocket/DatagramPacket)
- 轨迹系列——Socket总结及实现基于TCP或UDP的809协议方法
- Java基于UDP用Socket实现点对点聊天
- IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用
- Socket编程 消息传送 UDP协议(窗口实现) 客户端
- 利用TCP协议通过Socket编写的网络聊天工具2-通用类设计
- iOS 飞屏功能的实现(UDPSocket协议广播机制)
- 通过Socket和UDP实现多线程的聊天程序
- java中进行socket编程实现tcp、udp协议总结
- iOS 利用Socket UDP协议广播机制的实现
- 网络编程学习笔记(二)UDP协议及聊天小程序的实现
- 网络编程(UDP协议-聊天程序)