Advertisement

Java使用UDP协议发送和接收数据

阅读量:

1. UDP

UDP是无连接、不可靠传输协议。

2. Java使用UDP协议发送数据代码

四步:

(1) 创建发送端Socket对象

(2) 把数据打包成DatagramPacket对象

(3) 调用DatagramSocket方法发送数据

(4) 释放资源

复制代码
 import java.io.BufferedReader;

    
 import java.io.IOException;
    
 import java.io.InputStreamReader;
    
 import java.net.DatagramPacket;
    
 import java.net.DatagramSocket;
    
 import java.net.InetAddress;
    
 import java.net.SocketException;
    
  
    
 public class UDPSendTest {
    
     public static void main(String[] args) throws IOException {
    
     // 创建发送端Socket对象
    
     DatagramSocket ds = new DatagramSocket();
    
     // 自己封装键盘录入数据
    
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
     String line;
    
     while((line=br.readLine())!=null){
    
         if(line.equals("ending")){
    
             break;
    
         }
    
         // 数据打包
    
         byte[] b = line.getBytes();
    
         DatagramPacket dp = new DatagramPacket(b, b.length, InetAddress.getByName("uos-pc"),10086);
    
         // 调用DatagramSocket对象方法发送数据
    
         ds.send(dp);
    
     }
    
     // 释放资源
    
     ds.close();
    
  
    
     }
    
 }

3. Java使用UDPJ接收数据代码

四步

(1) 创建接收端Socket对象

(2) 创建DatagramPacket数据包,接收数据

(3) 调用DatagramSocket对象方法接收数据

(4) 解析数据

(5) 释放资源

复制代码
 import java.io.IOException;

    
 import java.net.DatagramPacket;
    
 import java.net.DatagramSocket;
    
 import java.net.SocketException;
    
  
    
 public class UDPReceiveTest {
    
     public static void main(String[] args) throws IOException {
    
     // 创建Socket对象接受数据,需指定端口
    
     DatagramSocket ds = new DatagramSocket(10086);
    
     while(true) {// 发送端一直发送,故用循环接收
    
         // 创建数据包,接收数据
    
         byte[] b = new byte[1024];
    
         DatagramPacket dp = new DatagramPacket(b, b.length);
    
         // 调用DatagramSocket对象方法接收数据
    
         ds.receive(dp);
    
         // 解析数据
    
         System.out.println(new String(dp.getData(), 0, dp.getLength()));
    
     }
    
     // 关闭接收端
    
     // ds.close();
    
     }
    
 }

4. 程序执行方法

启动UDPReceiveTest.java,然后启动UDPSendTest.java,并在控制台输入,即可。

全部评论 (0)

还没有任何评论哟~