黑马程序员技术交流社区

标题: 关于网络传输的问题 [打印本页]

作者: 吴在强    时间: 2013-2-13 11:07
标题: 关于网络传输的问题
这个是发送端:
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的传输机制嘛?

作者: 吴在强    时间: 2013-2-13 11:10
帖子怎么发到物联云了!{:soso_e143:}!
作者: 王勇文    时间: 2013-2-13 14:08
我没试过,但是我觉得很容易想象嘛。
      就像你的电脑可以设置本地ip,但是网络上使用的ip就不是你自己设置的本地ip。
  专业的术语我也不懂,我没查过呢。  可能是逻辑端口那方面的吧。
作者: 许鑫星    时间: 2013-2-13 14:18
{:soso_e117:} System.out.println("ip:"+socket.getPort()+"+"+"data"+datas);  你打印的根本不是ip地址。。。。。
另外udp传输机制就是发送端向接受端发送指定端口的数据包,接收端在同样的端口等待接收吧。。。。
作者: 夏振博    时间: 2013-2-13 14:35
String ip = packet.getAddress().getHostAddress();//这里已经得到ip地址了,你的代码获得ip地址 后面没有用到
System.out.println("ip:"+socket.getPort()+"+"+"data"+datas);//这里的应该把上面获得的ip地址打印输出 System.out.println("ip:"+ip+"+"+"data"+datas);

作者: 吴在强    时间: 2013-2-14 11:54
可以解释一下udp的原理么?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2