首页 > 技术文章 > 使用UDP协议发送和接收数据

EvanTheGreat 2021-02-26 11:13 原文

首先我们来开发一下UDP协议的发送端。

UDP_SEND.java:

 1 package com.hw.UDP0226;
 2 
 3 import java.net.DatagramPacket;
 4 import java.net.DatagramSocket;
 5 import java.net.InetAddress;
 6 import java.net.SocketException;
 7 
 8 @SuppressWarnings("unused")
 9 public class UDP_SEND {
10     public static void main(String[] args) throws Exception {
11         //发送数据时使用Socket
12         DatagramSocket ds = new DatagramSocket(); //首先创建一个数据包套接字
13         /**
14          * 创建DatagramPacket对象时,指定数据包的内存空间和大小、数据包的目标地址和端口。
15          */
16         byte[] buf = "从菜鸟到年薪百万".getBytes();  //这是我们要传送的数据,弄到数组里
17         int length = buf.length;   //指定数组的长度
18         InetAddress address = InetAddress.getByName("192.168.0.105");  //指定接受该信息的计算机的ip地址
19         int port = 7878;  //指定端口号
20         DatagramPacket dp = new DatagramPacket(buf, length, address, port);  //创建要发送的数据包
21         
22         ds.send(dp);  //调用DatagramSocket的send方法发送数据包
23         ds.close();  //发送完以后一定记得关闭
24     }
25 }

 UDP_RECEIVE.java:

 1 package com.hw.UDP0226;
 2 
 3 import java.net.DatagramPacket;
 4 import java.net.DatagramSocket;
 5 import java.net.SocketException;
 6 
 7 @SuppressWarnings("unused")
 8 public class UDP_RECEIVE {
 9     public static void main(String[] args) throws Exception {
10         DatagramSocket ds = new DatagramSocket(7878);  //监听是哪个端口号接收数据(绑定到指定端口)
11         
12         byte[] buf = new byte[1024];
13         int length = buf.length;
14         DatagramPacket dp = new DatagramPacket(buf, length); 
15         //以上为创建字节数组来接收数据包
16         ds.receive(dp);  //调用receive方法接受UDP包
17         String str = new String(dp.getData(),0,dp.getLength()); //转换为字符串
18         System.out.println(str); //输出
19         ds.close();
20     }
21 }

 注意这里面的port端口是接收端的端口,发送端的端口是发送端自己会获取一个。

推荐阅读