zoukankan      html  css  js  c++  java
  • 网络编程初探--使用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 }

    测试运行:

      

  • 相关阅读:
    词法分析程序
    0909关于编译原理
    深度学习中图像检测的评价标准
    【 记忆网络 1 】 Memory Network
    ssm又乱码
    百度地图标注没了
    Fragment与Activity交互(使用Handler)
    在android里用ExpandableListView实现二层和三层列表
    java中outer的使用
    android中使用Http下载文件并保存到本地SD卡
  • 原文地址:https://www.cnblogs.com/wsw-tcsygrwfqd/p/6657013.html
Copyright © 2011-2022 走看看