用Java语言编写简单聊天程序
2016-06-18 10:32
330 查看
<span style="font-size:18px;"></span><pre name="code" class="java"><span style="font-size:18px;">Tips:编写一个聊天程序。传输层使用UDP协议。可以同时接收、发送数据 需要多线程技术一个线程控制接收,一个线程发送 因为收和发动作不一致,定义两个run方法这两个方法封装在不同的类中 </span>
<span style="font-size:18px;">import java.io.*; import java.net.*; /* * 创建局域网聊天 */ public class UDPChat{ public static void main(String[] arr) throws Exception{ DatagramSocket sendsocket = new DatagramSocket(); DatagramSocket recesocket = new DatagramSocket(10239); new Thread(new UDPSendChat(sendsocket)).start(); new Thread(new UDPReceChat(recesocket)).start(); } } class UDPSendChat implements Runnable { private DatagramSocket ds; public UDPSendChat(DatagramSocket ds) { this.ds = ds; } @Override public void run() { try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line = null; while((line = br.readLine())!=null){//read阻塞式方法 if("886".equals(line)) break; byte[] buf = line.getBytes(); DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getLocalHost(), 10239); ds.send(dp); } } catch (Exception e) { throw new RuntimeException("发送失败"); } } } class UDPReceChat implements Runnable { private DatagramSocket ds; public UDPReceChat(DatagramSocket ds) { this.ds = ds; } @Override public void run() { try { while(true){ byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf, buf.length); ds.receive(dp);//阻塞式方法 String ip = dp.getAddress().getHostAddress(); String data = new String(dp.getData(),0,dp.getLength()); System.out.println(ip+"..."+data); } } catch (Exception e) { throw new RuntimeException("接受失败"); } } } </span>
<span style="font-size:18px;">不同的IP地址上聊天截图:</span>
<span style="font-size:18px;"><img src="http://img.blog.csdn.net/20160618105059608?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /> </span>
<span style="font-size:18px;"><img src="http://img.blog.csdn.net/20160618105104139?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /> </span>
<span style="font-size:18px;"> </span>
<span style="font-size:18px;"> </span>
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树