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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© innovator 中级黑马   /  2016-6-16 08:53  /  691 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

问题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();
        }
}

3 个回复

倒序浏览
端口号不一致应该发送不成功吧
回复 使用道具 举报
tianzhu2725 发表于 2016-6-16 19:58
端口号不一致应该发送不成功吧

我也以为发不成功,改了几次运行几遍都发成功了,所以想咨询大牛这个内部发送与接收的机理是什么情况...
回复 使用道具 举报
963852741 来自手机 初级黑马 2016-6-18 01:08:03
板凳
我试了几遍,你说的端口,接收不到数据呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马