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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴在强 中级黑马   /  2013-2-13 11:07  /  1945 人查看  /  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:}!
回复 使用道具 举报
我没试过,但是我觉得很容易想象嘛。
      就像你的电脑可以设置本地ip,但是网络上使用的ip就不是你自己设置的本地ip。
  专业的术语我也不懂,我没查过呢。  可能是逻辑端口那方面的吧。
回复 使用道具 举报
{:soso_e117:} System.out.println("ip:"+socket.getPort()+"+"+"data"+datas);  你打印的根本不是ip地址。。。。。
另外udp传输机制就是发送端向接受端发送指定端口的数据包,接收端在同样的端口等待接收吧。。。。
回复 使用道具 举报
String ip = packet.getAddress().getHostAddress();//这里已经得到ip地址了,你的代码获得ip地址 后面没有用到
System.out.println("ip:"+socket.getPort()+"+"+"data"+datas);//这里的应该把上面获得的ip地址打印输出 System.out.println("ip:"+ip+"+"+"data"+datas);
回复 使用道具 举报
可以解释一下udp的原理么?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马