黑马程序员技术交流社区

标题: 有关DatagramSocket的小问题,求解释 [打印本页]

作者: 何丛    时间: 2013-9-20 23:49
标题: 有关DatagramSocket的小问题,求解释
本帖最后由 何丛 于 2013-9-21 02:28 编辑
  1. DatagramSocket datagramSocket = new DatagramSocket(8888) ;
  2. byte buf[] = string.getBytes() ;
  3. DatagramPacket datagramPacket = new DatagramPacket( buf , buf.length ,InetAddress.getLocalHost() , 10000);
复制代码
为什么DatagramPacket中已经绑定了IP地址和端口,而DatagramSocket还要绑定一个端口,
而且在接收端获得的端口不是DatagramPacket绑定的端口而是DatagramSocket绑定的端口

作者: 周文斌    时间: 2013-9-21 00:25
DatagramPacket datagramPacket = new DatagramPacket( buf , buf.length ,InetAddress.getLocalHost() , 10000);
中的端口号指得是数据发送目标的端口号

DatagramSocket datagramSocket = new DatagramSocket(8888) ;
指得是发送端出去的端口号,可以不填,那样会自动分配一个端口。

------------------------------------------------------------
socket有个形象的举例是港口,如果你的数据想从一个地方到另一个地方,那么必须从一个港口,到另外一个港口。既然目的地的港口需要具体的码头号(端口号)用做驳船,那么在启航的港口当然也需要某个码头号来对应某搜船啦!

至于为什么收到的对象里,端口号是出发点的端口号,那是肯定啦,人家当然不需要知道自己的端口号啦!自己的对象里有自己的端口号呀,既然是发送者来的对象,那么我获取对象中的端口号的目的当然是想往回发送啦,那么当然需要的是对方的端口号啦~~~

不知道这样解释你明不明白。。http://bbs.itheima.com/forum.php?mod=attachment&aid=MjY0Mzl8MTc4YWNjZGM3NjQ3Y2I0MjE4NmYyNWY5ZGIwNTI5ZDB8MTczOTc3NDM1OQ%3D%3D&request=yes&_f=.jpg

QQ图片20130921002609.jpg (42.94 KB, 下载次数: 6)

QQ图片20130921002609.jpg

作者: 何丛    时间: 2013-9-21 00:49
谢谢你的回答,我大概懂了




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