在具有不同UDP端口的联网计算机上发送/接收数据包

时间:2011-06-18 02:14:10

标签: c++ c networking udp

如果我在通过UDP进行通信的LAN上有两台或更多台计算机,那么它们是否都必须使用相同的端口才能从另一台接收消息?例如,假设我的桌面使用端口1550发送消息,我的笔记本也在LAN上,使用端口3746来监听和接收消息。在这种情况下使用目标IP进行发送是否有效?如果没有,每台计算机是否必须知道并指定接收方的端口?

3 个答案:

答案 0 :(得分:4)

对于UDP或TCP端点,必须设置地址和端口。启动器必须知道要发送到哪个地址端口。接收方可以使用getpeername()调用来确定发送方的地址端口组合,然后使用此信息构建回复消息的地址结构。这两个不需要使用相同的端口号。

答案 1 :(得分:2)

do they all have to be using the same port to be able to receive messages from one another

没有。服务器和客户端不需要使用相同的端口号;实际上这通常是不可行的。但是每个发送者必须知道所需接收者的端口号。在响应的情况下,源地址和端口随请求一起提供。在请求的情况下,客户端必须已经知道服务器ip:port,不知何故。

答案 2 :(得分:1)

在应用层进行通信时,必须指定目标IP和端口。 如果在底层(物理帧)中,您可以将帧发送到目的地。