首先我们来开发一下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端口是接收端的端口,发送端的端口是发送端自己会获取一个。