一、UDP协议发送数据
发送处理过程:
- 创建发送端Socket对象——DatagramSocket
- 创建数据并将数据打包到DatagramPacket对象
- 通过Socket发送
- 释放相关资源
发送处理代码:
public class TestUDPSend {
public static void main( String [] args) {
String data= "hello UDP" ;
DatagramSocket datagramSocket=null;
try {
//实例化套接字,并指定发送端口
datagramSocket= new DatagramSocket( 8080 );
//指定数据目的地的地址,以及目标端口
InetAddress destination=InetAddress.getByName( "localhost" );
DatagramPacket datagramPacket=
new DatagramPacket(data.getBytes(), data.getBytes().length,destination, 8081 );
//发送数据
datagramSocket.send(datagramPacket);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
datagramSocket.close();
}
}
}
二、UDP协议接收数据
接受处理过程:
- 创建接受端Socket对象——DatagramSocket
- 创建包DatagramPacket对象(数据接收容器)
- 调用接受方法接受数据
- 解析数据包对象,取出接受到的信息
- 释放资源
接受处理代码:
public class TestUDPReceive {
public static void main( String [] args) {
DatagramSocket datagramSocket=null;
try {
//监视8081端口的内容
datagramSocket= new DatagramSocket( 8081 );
byte [] buf= new byte [ 1024 ];
//定义接收数据的数据包
DatagramPacket datagramPacket= new DatagramPacket(buf, 0 , buf.length);
datagramSocket.receive(datagramPacket);
//从接收数据包取出数据
String data= new String (datagramPacket.getData() , 0 ,datagramPacket.getLength());
System.out.println(data);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
datagramSocket.close();
}
}
}
运行:
先运行接收端,让程序监听8081端口,然后运行发送端发送数据到本机(localhost)的8081端口。
之后会发现在接收端的控制台打印出 ‘hello UDP ’的内容。