黑马程序员技术交流社区

标题: 学习Socket问题 [打印本页]

作者: ﹏゛心被伱牵    时间: 2012-10-26 13:14
标题: 学习Socket问题

                DatagramSocket ds = new DatagramSocket(8888);
                byte[] buf = "nihao!!!!!!!!! ".getBytes();
                DatagramPacket dp =
                        new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.254"),10000);

大家知道8888和10000这俩个端口应该怎么理解吗
作者: 一身顺利    时间: 2012-10-26 13:24
DatagramSocket(int port)构造数据报套接字并将其绑定到本地主机上的指定端口;
DatagramPacket(...)构造数据报包,用来将长度为length、偏移量为offset的包发送到指定主机上的指定端口号;
作者: 范贞亮    时间: 2012-10-26 13:25
如果你是发送端的话, 你是不需要绑定什么端口的,就是那个8888  , 而是在发送的时候把你要发送到的目标主机和端口指定就好了。
然后接受端的话, 绑定端口号就可以得到由端口得到的InputStream 流了。就可以读取打印的了
作者: 程杰    时间: 2012-10-26 13:25
从8888是接收信息。而后面的是把buf发送到192.168.1.254端口号被10000的目标上去
作者: 周万谋    时间: 2012-10-26 13:46
本帖最后由 周万谋 于 2012-10-26 13:50 编辑

这是发送端:10000是发送到IP(地址为"192.168.1.254”)的指定端口,8888是可以由自己指定的端口,也可以不指定,不指定的话,系统会随机分配一个
那么接收端就必须监听10000这个端口,
              接收端: DatagramSocket ds  = new DatagramSocket(10000);
这样就把发送、接收端联系起来了
作者: 李靖    时间: 2012-10-26 13:51
这个是网络协议的问题,你传输的数据,是给应用程序来使用的,所以用ip定位主机,用端口号来定义你的程序的出口或入口。这个关键是理解。Socket是用来标示通信服务点的。




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