黑马程序员技术交流社区
标题:
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