通过UDP传输方式实现发送与接收消息(java语言)
UDP特点
UDP(面向无连接):聊天,刷视频,视频共享 – 将数据及源和目的封装成数据包,不需要建立连接 – 每个数据报的大小限制在64k内 – 因无连接,是不可靠协议(不在会丢包) – 不需要建立连接,速度快
UDP发送端
步骤
1、建立udp socke服务 2、提供数据,并将数据封装到数据包中 3、通过socket服务的发送功能,将数据包发出去 4、关闭资源
代码示例
class UdpSend{
public static void main(String[] args)throws Exception{
//1、DatagramSocket
DatagramSocket ds = new DatagramSocket();
//2、DatagramPacket
byte[] data = "udp seng".getBytes();//字符串变成字节数组
DatagramPacket dp = new DatagramPacket(data,data.length,InetAddress.getByName("ip地址"),10000);
//3、发送send
ds.send(dp);
//4
ds.close();
}
}
UDP接收端
步骤
1、建立udp socke服务,通常会监听一个端口,其实就是给这个接收应用程序定义一个数字标识 2、定义一个数据包,存储接收到的数据 3、receive方法,将接收到的数据存到2的数据包 4、通过数据包对象的特有功能,将不同数据取出,打印在控制台 5、close
代码
class UdpReceive{
public static void main(String[] args)throws Exception{
//1、建立端点
DatagramSocket ds = new DatagramSocket(10000);
//2、数据包
while(true){
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
//3、receive
ds.receive(dp);
//4 获取dp.getAddress()返回的是一个inetAddress对象,再通过getHostAddress返回字符串
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
int port = dp.getPort();
System.out.println("ip:"+ip+" "+"data:"+data+" "+"port:"+port);//ip:169.254.154.84 data:udp seng port:56977
}
//这里的port是系统随机给应用程序定义的端口号
//5
ds.close();
}
}
效果
接收端:
