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 }

    测试运行:

      

  • 相关阅读:
    git rebase 还是 merge的使用场景最通俗的解释
    漏洞复现:Struts2 远程代码执行漏洞(S2-033)
    linux临时网络配置
    漏洞复现:Struts2 S2-032 漏洞环境
    XXE攻击学习
    启用了不安全的HTTP方法【转】
    HTTP参数污染【转】
    逻辑漏洞挖掘方式
    大漏洞时代下的僵尸网络追踪-笔记
    markdown入门杂记
  • 原文地址:https://www.cnblogs.com/wsw-tcsygrwfqd/p/6657013.html
Copyright © 2011-2022 走看看