A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴在强 中级黑马   /  2013-2-13 11:07  /  1659 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这个是发送端:
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的传输机制嘛?

5 个回复

倒序浏览
帖子怎么发到物联云了!{:soso_e143:}!
回复 使用道具 举报
可以解释一下udp的原理么?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马