1、创建发送端
(1)建立DatagramSocket对象。该端点建立,系统会随机分配一个端口。如果不想随机配置,可以手动指定。
(2)将数据进行packet包的封装,必须要指定目的地地址和端口。
(3)通过socket服务的send()方法将该包发出。
(4)将socket关闭。
2、创建接收端
(1)建立DatagramSocket对象。要监听一个端口。
(2)通过socket的receive方法将数据存入数据包中。
(3)通过数据包dp的方法getData()、getAddress()、getPort()等方法获取包中的指定信息。
(4)将socket关闭。
3、举例说明
(1)接收端:
package com.iotek.tcpsocket;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UDPDemo2 {
public static void main(String[] args) throws IOException {
DatagramSocket socket = new DatagramSocket(8000);
byte[] buff = new byte[100];
DatagramPacket packet = new DatagramPacket(buff, 100);
socket.receive(packet);//接收传来的数据包
System.out.println(new String(buff,0,packet.getLength()));
String string = "Me too!";
DatagramPacket packet2 = new DatagramPacket(string.getBytes(), string.length(),packet.getAddress(),packet.getPort());
socket.send(packet2);
socket.close();
}
}
(2)发送端:
package com.iotek.tcpsocket;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UDPDemo1 {
public static void main(String[] args) throws IOException {
DatagramSocket socket = new DatagramSocket();
String string = "I Love You!";
//将数据进行封装,封装到数据包当中
DatagramPacket packet = new DatagramPacket(string.getBytes(), string.length(),InetAddress.getByName("localhost"),8000);
socket.send(packet);//发送
byte[] buff = new byte[100];
DatagramPacket packet2 = new DatagramPacket(buff, 100);
socket.receive(packet2);
System.out.println(new String(buff,0,packet2.getLength()));
socket.close();
}
}
(3)为了更直观地理解服务器端和客户端的交互过程,我们将两个文件拷贝到f盘当中。使用下列命令进行编译和执行。
//编译
javac -d . UDP*.java
//开启接收端
java com.iotek.tcpsocket.UDPDemo2
//开启发送端,这里另外开启一个窗口
java com.iotek.tcpsocket.UDPDemo1