黑马程序员------毕老师视频笔记第23-24天------网络编程(3)
来源:互联网 发布:网络理财平台哪个好 编辑:程序博客网 时间:2024/05/21 07:04
---------------------- 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培训、期待与您交流! ----------------------
0 0
- 黑马程序员------毕老师视频笔记第23-24天------网络编程(3)
- 黑马程序员------毕老师视频笔记第23-24天------网络编程(1)
- 黑马程序员------毕老师视频笔记第23-24天------网络编程(2)
- 黑马程序员------毕老师视频笔记第23-24天------网络编程(4)
- 黑马程序员------毕老师视频笔记第22天-----图形化编程(GUI)(1)
- 黑马程序员------毕老师视频笔记第22天------图形化编程(2)
- 黑马程序员------毕老师视频笔记第18-21天------IO输入与输出(3)
- 黑马程序员------毕老师视频笔记第13-17天------JavaAPI(基本数据类型包装类)
- 黑马程序员------毕老师视频笔记第13-17天------集合框架(Collection)
- 黑马程序员------毕老师视频笔记第13-17天------集合Collection-List-(ArrayList、LinkedList)
- 黑马程序员------毕老师视频笔记第13-17天------集合Collection-Set-(HashSet、TreeSet)
- 黑马程序员------毕老师视频笔记第18-21天------IO输入与输出(2)
- 黑马程序员------毕老师视频笔记第18-21天------IO输入与输出(4)
- 黑马程序员------毕老师视频笔记第13-17天------泛型
- 黑马程序员------毕老师视频笔记第13-17天------集合Map
- 黑马程序员------毕老师视频笔记第18-21天------IO输入与输出 (1)
- 黑马程序员------毕老师视频笔记第五天------面向对象(封装)
- 黑马程序员------毕老师视频笔记第五天------面向对象(构造函数)
- 编程之美2014测试阶段题目--传话游戏
- 明日边缘 Edge of Tomorrow (2014)旋风下载
- 黑马程序员------毕老师视频笔记第22天------图形化编程(2)
- 黑马程序员------毕老师视频笔记第23-24天------网络编程(1)
- 黑马程序员------毕老师视频笔记第23-24天------网络编程(2)
- 黑马程序员------毕老师视频笔记第23-24天------网络编程(3)
- [LeetCode97]Set Matrix Zeroes
- 消息队列
- 关于AnchorPoint和setPosition
- [Rotate Image48]Rotate Image
- COM原理速成~
- COM组件技术
- Android播放音频相关
- Windows DLL基本原理