UDP网络编程案例
一、UDPReceiver端:
代码如下:
package com.evaStudy.encap.API;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
/**
* @author EVA LEE
* @version 1.0
* @time 17/1/2024 2:46 pm
*/
public class UDPReceiverA {
public static void main(String[] args) throws IOException {
//创建一个 DatagramSocket 对象 准备在9999接收
DatagramSocket socket = new DatagramSocket(9999);
//构建一个 DatagramPacket对象 准备接收数据
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
//调用接收方法 传过来的数据会被填充到 DatagramPacket对象里
socket.receive(packet);
//拆包 DatagramPacket对象 取出数据
int length = packet.getLength();//实际接收到的数据长度
byte[] data = packet.getData();//接收到的数据
String s = new String(data, 0, length);
System.out.println(s);
data = "hello!!!!!!".getBytes();
packet =
new DatagramPacket(data, data.length, InetAddress.getByName("192.168.1.9"), 9998);
socket.send(packet);
//关闭资源
socket.close();
}
}
二、UDPSender端:
代码如下:
package com.evaStudy.encap.API;
import java.io.IOException;
import java.net.*;
/**
* @author EVA LEE
* @version 1.0
* @time 17/1/2024 2:47 pm
*/
public class UDPSenderB {
public static void main(String[] args) throws IOException {
//创建 DatagramSocket对象 并在9998端口 接收数据
DatagramSocket socket = new DatagramSocket(9998);
//将需要发送的数据 封装到 DatagramPacket对象
byte[] data = "hello?".getBytes();
DatagramPacket packet =
new DatagramPacket(data, data.length, InetAddress.getByName("192.168.1.9"), 9999);
socket.send(packet);
byte[] buf = new byte[1024];
packet = new DatagramPacket(buf, buf.length);
//调用接收方法 传过来的数据会被填充到 DatagramPacket对象里
socket.receive(packet);
//拆包 DatagramPacket对象 取出数据
int length = packet.getLength();//实际接收到的数据长度
data = packet.getData();//接收到的数据
String s = new String(data, 0, length);
System.out.println(s);
socket.close();
}
}