UDP传输数据
DatagramSocket:通讯的数据管道
常用方法:send(发送)和receive(接收)
绑定一个IP和Port(可选多网卡)
DatagramPacket:封装数据
地址标签:目的地IP+Port
UdpRecv.java
public class UdpRecv {
public static void main(String[] args) throws Exception {
DatagramSocket dr = new DatagramSocket(3000);
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,1024);
System.out.println("我在等待消息");
dr.receive(dp);
System.out.println("我已接收到消息");
String strRecv = new String(dp.getData(),0, dp.getLength())+
"from"+dp.getAddress().getHostAddress()+":"+dp.getPort();
System.out.println(strRecv);
System.out.println("我要开始发送消息了");
String str = new String("你好,UDP");
DatagramPacket dp2 = new DatagramPacket(str.getBytes(StandardCharsets.UTF_8),
str.length(), InetAddress.getByName("127.0.0.1"),dp.getPort());
dr.send(dp);
System.out.println("发送消息结束了");
}
}
UdpSend.java
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.nio.charset.StandardCharsets;
public class UdpSend {
public static void main(String[] args) throws Exception {
DatagramSocket ds = new DatagramSocket();
String str = "Hello UDP";
DatagramPacket dp = new DatagramPacket(str.getBytes(StandardCharsets.UTF_8),
str.length(), InetAddress.getByName("127.0.0.1"),3000);
System.out.println("我要发送数据了");
ds.send(dp);
System.out.println("我发送数据结束了");
Thread.sleep(1000);
byte[] buf = new byte[1024];
DatagramPacket dp2 = new DatagramPacket(buf,1024);
System.out.println("我开始接收数据了");
ds.receive(dp2);
System.out.println("我接受结束结束了");
String str2 = new String(dp.getData(),0,dp2.getLength())+
"fron"+dp.getAddress().getHostAddress()+":"+dp.getPort();
System.out.println(str2);
}
}