这个是发送端:
public class UdpSend {
/**
* @param args
* @author admin Mr.wu
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// 创建一个网络服务
DatagramSocket gram = new DatagramSocket();
// DatagramPacket(byte[] buf, int length, InetAddress address, int port)
byte[] buf = "你好,我是superman".getBytes();
// 构建一个数据包对象
DatagramPacket packet = new DatagramPacket(buf, buf.length,
InetAddress.getByName("L9V680Q2P6SGD7H"), 10001);
System.out.println("ip=" + packet.getAddress().getHostAddress());
// 使用创建的网络服务对象发送数据包
gram.send(packet);
// 关闭网络服务资源
gram.close();
}
}
发送端运行结果:
ip=140.240.242.15
这个是接收端:
public class UdpReceive {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
//创建一个网络对象
DatagramSocket socket = new DatagramSocket(10001);
System.out.println("ip"+socket.getPort());
//定义一个receive接收数据包
byte[] buf = new byte[1024*32];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
//通过receive方法将数据将收到的数据存入数据包中
socket.receive(packet);
String ip = packet.getAddress().getHostAddress();
String datas = new String(packet.getData(),0,packet.getLength());
System.out.println("ip:"+socket.getPort()+"+"+"data"+datas);
//关闭网络资源
socket.close();
}
}
接收端运行结果:
ip:-1+data你好,我是superman
为什么它们两个得到的ip地址都不一样呢,按道理,发送端也把它的ip地址数据发送给接收端,应该ip都是相同的?同时,可以简单点说明udp的传输机制嘛?
|
|