package Net.UDP;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
/**
* 使用UDP接受数据
* 创建接受端socke对象
* 接受数据
* 解析数据
* 释放资源
*
* */
public class ReceiveDemo {
public static void main(String[] args) throws IOException {
// * 创建接受端socke对象
DatagramSocket ds=new DatagramSocket(8888);
// * 接受数据
//DatagramPacket(byte[] buf, int length)
// 构造 DatagramPacket,用来接收长度为 length 的数据包。
byte bys[]=new byte[1024];
DatagramPacket dp=new DatagramPacket(bys,bys.length);
ds.receive(dp); //阻塞
// * 解析数据
// getAddress() 返回发送端的 IP 地址,
// byte[] getData() 获取接受到的数据,也可以直接使用创建包对象时的数组
// int getLength() 返回将要发送或接收到的数据的长度。
InetAddress ia=dp.getAddress();
byte data[]=dp.getData();
int len=dp.getLength();
System.out.println("who:"+ia+"+data:"+new String(data,0,len)+"+length:"+len);
System.out.println("who:"+ia+"+data:"+new String(bys,0,len)+"+length:"+len);
// * 释放资源
ds.close();
}
}
删除线格式
package Net.UDP;
import java.io.IOException;
import java.net.*;
/**
* 使用UDP发送数据
* 创建发生端socke对象
* 创建数据并打包
* 发送数据
* 释放资源
*
* DatagramSocket此类表示用来发送和接收数据报包 ,基于UDP
* DatagramSocket()
创建Socket对象并随机分配端口号。
DatagramSocket(int port)
创建Socket对象并指定端口号
。
* */
public class SendDemo {
public static void main(String[] args) throws IOException {
//创建发生端socke对象
DatagramSocket ds=new DatagramSocket();
// * 创建数据并打包
/**
* DatagramPacket:此类表示数据包
* 数据:字节流,byte[]
* 设备的地址ip
* 进程的地址:端口号
* DatagramPacket(byte[] buf, int length, InetAddress address, int port)
构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
* */
String s="hello";
byte[] bys=s.getBytes();
InetAddress address=InetAddress.getByName("DESKTOP-QG1LSJ2");
DatagramPacket dp=new DatagramPacket(bys,bys.length,address,8888);
// * 发送数据
ds.send(dp);
// * 释放资源
ds.close();
}
}