黑马程序员技术交流社区

标题: UDP传输中的端口问题 [打印本页]

作者: innovator    时间: 2016-6-16 08:53
标题: UDP传输中的端口问题
问题1、端口号这个问题有些不懂。希望大神给予指导
视频里说的两个端口要一致,而我接收设置1234,发送端口设置为6789,为什么运行时同样可以收到。(是因为我发送方和接收方只开了一个端口,默认的接收吗?)这个端口的号具体是怎么指导发送和接收对接的呢???       
问题2见下面红色区域2
发送端(send)
public class Demo_send {
          public static void main(String[] args) throws Exception {       
                String str = "我爱你,我的家";
                DatagramSocket socket = new DatagramSocket();                //创建socket相当于创建码头
                DatagramPacket packet =                                                         //创建packet相当于创建集装箱
                                new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getByName("127.0.0.1"), 6789);
                socket.send(packet);
                socket.close();
        }
}
接收端(receive)
public class Demo_Receive {
        public static void main(String[] args) throws Exception  {
                DatagramSocket socket = new DatagramSocket(1234);       
//视频里说的两个端口要一致,而我接收设置1234,发送端口设置为6789,为什么同样可以收到。这个端口的号具体是怎么指导发送和接收对接的呢???                       
                DatagramPacket p = new DatagramPacket(new byte[1024], 1024);               //相当于创建1024大小的集装箱
                socket.receive(p);                                                                                                //接货,接收数据
//这里的接收用P代替,而不是和发送端一样的packet,        因为上面的端口号不是对应的,那么接收端的packet(p)是怎么识别发送端的packet并实现数据对接的呢?        (查看了received编码,不过是新手,看的不太明白。也是像上面的默认接收的吗?)
                byte[] arr =p.getData();
                int len = p.getLength();
                System.out.println(new String(arr,0,len));
                socket.close();
        }
}


作者: tianzhu2725    时间: 2016-6-16 19:58
端口号不一致应该发送不成功吧
作者: innovator    时间: 2016-6-16 21:40
tianzhu2725 发表于 2016-6-16 19:58
端口号不一致应该发送不成功吧

我也以为发不成功,改了几次运行几遍都发成功了,所以想咨询大牛这个内部发送与接收的机理是什么情况...
作者: 963852741    时间: 2016-6-18 01:08
我试了几遍,你说的端口,接收不到数据呢




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