网络编程初探--使用UDP协议的简易聊天室

 

UDP是一种无连接的传输层协议,提供快速不可靠的服务。

一、发送端
* 创建UDP发送端
* 步骤:
* 1.建立UDP的Socket服务
* 2.将要发送的数据封装到数据包中
* 3.通过UDP的socket服务将数据包发送出去
* 4.关闭socket服务

 1 public class UDPSendDemo2 {
 2 
 3     public static void main(String[] args) throws IOException {
 4         System.out.println("发送端启动了...");
 5         
 6         DatagramSocket ds=new DatagramSocket();//建立socket服务
 7         BufferedReader br=new BufferedReader(new InputStreamReader(System.in));//读取键盘录入
 8         String line=null;
 9         while((line=br.readLine())!=null){
10             byte[] buf=line.getBytes();
11             DatagramPacket dp=new DatagramPacket(buf, buf.length,InetAddress.getByName("wsw"),10100);//封装数据包
12             ds.send(dp);//发送数据
13             
14             if("over".equals(line))//当录入over时,关闭发送端
15                 break;
16         }
17         ds.close();//关闭资源
18         }
19 }

 

二、接收端

* 建立UDP接收端
* 步骤:
* 1.建立UDP的Socket服务,因为要接收数据,必须明确接收的端口号
* 2.创建数据包,用来存储接收到的数据,方便用数据包对象的方法解析这些数据
* 3.使用socket服务的receive方法接收这些数据
* 4.通过数据包中的方法解析这些数据
* 5.关闭资源

 1 public class UDPReceDemo2 {
 2 
 3     public static void main(String[] args) throws IOException {
 4         System.out.println("接收端启动了...");
 5         
 6         while(true){//不停接收数据
 7             DatagramSocket ds=new DatagramSocket(10100);
 8             byte[] buf=new byte[1024];
 9             DatagramPacket dp=new DatagramPacket(buf, buf.length);
10             ds.receive(dp);//接收数据,是阻塞式方法
11             
12             //解析数据 源ip地址,源端口号,发送的内容
13             String ip=dp.getAddress().getHostAddress();
14             int port=dp.getPort();
15             String text=new String(buf,0,dp.getLength());
16             System.out.println(ip+":"+port+":"+text);
17             if(text.equals("over")){
18                 System.out.println(ip+"...已经离开聊天室");
19             }
20             ds.close();//关闭资源
21         }
22     }
23 }

测试运行:

  

 

posted @ 2017-04-01 17:52  沐一  阅读(1007)  评论(0编辑  收藏  举报