黑马程序员 用UDP协议在dos命令行里模拟一个聊天程序
2013-07-04 08:51
423 查看
---------------------- android培训、java培训、期待与您交流! --------------------
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
/* 需求: 在dos命令行里模拟一个聊天程序 有收数据的部分,和发数据的部分,这两部分需要同时执行。 那就需要用到多线程技术。 一个线程控制收,一个线程控制发。 */ import java.io.*; import java.net.*; class ChatDemo { public static void main(String[] args) throws Exception { DatagramSocket sendSocket = new DatagramSocket(); DatagramSocket receSocket = new DatagramSocket(10011);//接收端要定义好所监听的端口,因为发送端设置的发送目的就是这个端口 new Thread(new Send(sendSocket)).start();//开启两个线程 new Thread(new Rece(receSocket)).start(); } } class Send implements Runnable//发送端 { private DatagramSocket ds; public Send(DatagramSocket ds) { this.ds = ds; } public void run() { try { BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)); String line = null; while((line=bufr.readLine())!=null)//读取键盘录入的字符串 { byte[] buf = line.getBytes();//把这字符串转成字节数组 DatagramPacket dp = /*定义数据报包,含字节数组与目的地ip是广播地址192.168.0.255,让此段网络都能收到,端口是10011*/ new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.0.255"),10011); ds.send(dp);//发送数据报包 if("886".equals(line))//停止发送线程 break; } } catch (Exception e) { throw new RuntimeException("发送端失败"); } } } class Rece implements Runnable//接收端 { private DatagramSocket ds; 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()/*取出此包的IntAdress对象*/.getHostAddress();//取出ip地址 String data = new String(dp.getData(),0,dp.getLength());//取出此包中的字节数组,并转成字符串 if("886".equals(data))//当接收到的字符串是886时就停止此线程 { System.out.println(ip+"....离开聊天室"); break; } System.out.println(ip+"说:"+data);//普通数据都把ip和说的内容打出来 } } catch (Exception e) { throw new RuntimeException("接收端失败"); } } }
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
相关文章推荐
- 多线程的udp协议dos命令行的聊天程序
- JAVA学习第六十课 — UDP协议 &基于多线程模拟简单的QQ聊天程序
- 写一个基于UDP协议的聊天小程序
- 黑马程序员_Java基础_网络编程_UDP传输协议编程,控制台聊天程序
- 一个简单的基于udp协议的聊天程序
- 黑马程序员--写一个自己和自己聊天的小程序
- Udp编写一个聊天程序(线程方式)
- 黑马程序员_基于Socket_UDP的聊天小程序
- 在windows窗体程序中单独开一个dos命令行窗口,输出我们想要的信息(调试程序常用)
- 初识用UDP协议做的windows窗口聊天程序---此处是双向的"异步"多线程对话框通信.
- 使用UDP协议编写一个网络程序,设置接收端程序的监听端口是8001,发送端发送的数据是“Hello, world”。
- 网络编程(UDP协议-聊天程序)
- 使用UDP协议的JAVA网络聊天程序
- 基于UDP协议的Java聊天小程序!
- 一个比较简陋的命令行socket聊天程序
- 利用TCP和UDP协议,实现基于Socket的小聊天程序
- 使用UDP协议编写一个网络程序,设置接收端程序的监听端口是8001,发送端发送的数据是“Hello, world”。
- 黑马程序员_第三天_模拟聊天程序
- 黑马程序员--图形界面中的鼠标,键盘两个事件,做一个磁盘的文件列表,菜单,子菜单,模拟记事本。网络编程,TCP的通信协议的特点
- 网络编程与多线程的应用--基于socket udp编写一个简单聊天程序