黑马程序员------毕老师视频笔记第23-24天------网络编程(3)
2014-06-09 04:48
435 查看
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
UDP应用
简易聊天软件
编写一个聊天程序
有接收数据的部分和发送数据的部分
这两部分需要同时执行,那就需要用到多线程技术
一个线程控制收,一个线程控制发
因为收和发的动作不一致,所以要定义两个run方法,而且这两个方法要封装到不同的类中
运行Chat之后,在本机测试结果如下,由于是广播方式发送消息,所以一个网段的所有计算机,只要持有Send.class,Rece.class,Chat.class,然后持有jdk,运行Chat.class文件,都可以接收和发送消息。
![](http://img.blog.csdn.net/20140609044826406?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd293b2ppYWppYXdvd29qaWFqaWE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
UDP应用
简易聊天软件
编写一个聊天程序
有接收数据的部分和发送数据的部分
这两部分需要同时执行,那就需要用到多线程技术
一个线程控制收,一个线程控制发
因为收和发的动作不一致,所以要定义两个run方法,而且这两个方法要封装到不同的类中
import java.net.*; import java.io.*; class Send implements Runnable { private DatagramSocket ds = null; public Send(DatagramSocket ds) { this.ds = ds; } public void run() { try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line = null; while((line=br.readLine())!=null) { if("000".equals(line)) break; byte[] buf = line.getBytes(); DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.255"),10020); ds.send(dp); } } catch (Exception e) { throw new RuntimeException("发送失败"); } } } class Rece implements Runnable { private DatagramSocket ds = null; public Rece(DatagramSocket ds) { this.ds = ds; } 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("你的接受端挂了"); } } } class Chat { public static void main(String [] args)throws Exception { DatagramSocket dsSend = new DatagramSocket(); DatagramSocket dsRece = new DatagramSocket(10020); new Thread(new Send(dsSend)).start(); new Thread(new Rece(dsRece)).start(); } }
运行Chat之后,在本机测试结果如下,由于是广播方式发送消息,所以一个网段的所有计算机,只要持有Send.class,Rece.class,Chat.class,然后持有jdk,运行Chat.class文件,都可以接收和发送消息。
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
相关文章推荐
- 黑马程序员------毕老师视频笔记第23-24天------网络编程(2)
- 黑马程序员------毕老师视频笔记第23-24天------网络编程(1)
- 黑马程序员------毕老师视频笔记第23-24天------网络编程(4)
- 黑马程序员------毕老师视频笔记第22天------图形化编程(2)
- 黑马程序员------毕老师视频笔记第22天-----图形化编程(GUI)(1)
- java 网络编程 tcp黑马程序员学习笔记(4)
- 黑马程序员_java网络编程学习笔记
- 孙鑫VC++视频教程笔记(十四)网络编程(转载)
- 黑马程序员java笔记之六-----网络编程
- 黑马程序员—21—java基础:有关网络编程的学习笔记和学习心得体会
- 黑马程序员-java学习笔记-网络编程
- 孙鑫C++视频笔记(14)网络编程
- 黑马程序员_网络编程学习笔记-->代码主要是对UDP协议的讲解
- 黑马程序员-java学习笔记-网络编程
- 黑马程序员_网络编程TCP之学习笔记
- java 网络编程 黑马程序员学习笔记(3)
- 黑马程序员_看视频记笔记_C#编程基础01
- 孙鑫C++视频笔记(14)网络编程
- 黑马程序员学习笔记之六(java网络编程)
- 黑马程序员——学习笔记10.Java网络编程