java中模拟UDP传输的发送端和接收端实例详解

  

<强> java中模拟UDP传输的发送端和接收端实例详解

  

<强>一、创建UDP传输的发送端

  

1,建立UDP套接字的服务,
  

  

2,将要发送的数据封装到数据包中,
  

  

3,通过UDP套接字的服务将数据包发送出去。
  

  

4,关闭插座服务。

        进口java.io.IOException;   进口java.net.DatagramPacket;   进口java.net.DatagramSocket;   进口java.net.InetAddress;      公开课UDPSend {      公共静态void main (String [] args)抛出IOException {      System.out.println(“发送端启动……”);//1,创建UDP的套接字,使用DatagramSocket对象   DatagramSocket ds=new DatagramSocket ();//2,将要发送的数据封装到数据包中   字符串str=" UDP传输演示:我来了!”;      byte [] buf=str.getBytes ();//使用DatagramPacket将数据封装到该对象的包中      DatagramPacket dp=new DatagramPacket (buf缓冲区。长度,InetAddress.getByName (“192.168.191.1”), 10000);//3,通过UDP套接字的服务将数据包发送出去,使用发送方法   ds.send (dp);//4、关闭插座服务   ds.close ();   }   }      之前      

<强>二,创建UDP传输的接收端

  

1,建立UDP套接字的服务,因为要接收数据,所以必须明确一个端口号;
  

  

2,创建数据包,用于存储接收到的数据,方便用数据包对象的方法解析这些数据;
  

  

3,使用UDP套接字的服务的接收方法接收数据并存储到数据包中,
  

  

4,通过数据包的方法解析这些数据;
  

  

5,关闭插座服务。

        进口java.io.IOException;   进口java.net.DatagramPacket;   进口java.net.DatagramSocket;      公开课UDPReceive {   公共静态void main (String [] args)抛出IOException {      System.out.println(“接收端启动……”);//1,建立UDP套接字的服务   DatagramSocket ds=new DatagramSocket (10000);//2、创建数据包   byte [] buf=新字节[1024];   buf.length DatagramPacket dp=new DatagramPacket (buf);//3、使用接收方法将数据存储到数据包中   ds.receive (dp);//该方法为阻塞式的方法//4,通过数据包对象的方法解析这些数据,例如:地址,端口,数据内容等   .getHostAddress字符串ip=dp.getAddress () ();   int port=dp.getPort ();   字符串文字=新的字符串(dp.getData (), 0, dp.getLength ());      系统。println (ip +”:“+ +港”:“+文本);//5、关闭插座服务   ds.close ();   }   }      之前      

<强>三、优化UDP传输的发送端和接收端

  

由于在前两部分中,我们一次只能发送(或接收)一条消息,然后就关闭服务啦!因此如果我们想要发送多条消息,则需要不断的在发送端修改发送的内容,并且还需要重新启动服务器,比较麻烦。为了克服以上的缺点,我们可以对其进行优化,即:
  

  

1,在发送端,创建BufferedReader,从键盘录入内容,
  

  

2,在接收端,添加而(真正的)循环,不断的循环接收内容。

     /* *   *优化UDP传输的发送端   */进口java.io.BufferedReader;   进口java.io.IOException;   进口java.io.InputStreamReader;   进口java.net.DatagramPacket;   进口java.net.DatagramSocket;   进口java.net.InetAddress;      公开课UDPSend {   公共静态void main (String [] args)抛出IOException {      System.out.println(“发送端启动……”);//创建UDP的套接字,使用DatagramSocket对象   DatagramSocket ds=new DatagramSocket ();      BufferedReader bufr=new BufferedReader(新InputStreamReader(系统));   字符串行=零;   在((=bufr.readLine行())!=null) {//使用DatagramPacket将数据封装到该对象的包中   byte [] buf=line.getBytes ();   DatagramPacket dp=new DatagramPacket (buf缓冲区。长度,InetAddress.getByName (“192.168.191.1”), 10000);//通过UDP套接字的服务将数据包发送出去,使用发送方法   ds.send (dp);//如果输入信息为结束,则结束循环   如果(“/?equals(线))   打破;   }//关闭插座服务   ds.close ();   }   }      之前         /* *   *优化UDP传输的接收端   */进口java.io.IOException;   进口java.net.DatagramPacket;   进口java.net.DatagramSocket;      公开课UDPReceive {   公共静态void main (String [] args)抛出IOException {      System.out.println(“接收端启动……”);//建立UDP套接字的服务   DatagramSocket ds=new DatagramSocket (10000);      而(真){//创建数据包   byte [] buf=新字节[1024];   buf.length DatagramPacket dp=new DatagramPacket (buf);//使用接收方法将数据存储到数据包中   ds.receive (dp);//该方法为阻塞式的方法//通过数据包对象的方法解析这些数据,例如:地址,端口,数据内容等   .getHostAddress字符串ip=dp.getAddress () ();      int port=dp.getPort ();   字符串文字=新的字符串(dp.getData (), 0, dp.getLength ());   系统。println (ip +”:“+ +港”:“+文本);   }   }   }      

java中模拟UDP传输的发送端和接收端实例详解