【问题标题】:Sending/receiving packets on networked computers with different UDP ports在具有不同 UDP 端口的联网计算机上发送/接收数据包
【发布时间】:2011-09-17 14:46:49
【问题描述】:

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

【问题讨论】:

    标签: c++ c networking udp


    【解决方案1】:
    do they all have to be using the same port to be able to receive messages from one another
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 好吧,他问的是 TCP 和 UDP。
      【解决方案3】:

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

      【讨论】:

      • 对于UDP,在接收数据的同时使用recvmsg()获取发件人地址更为常见。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      • 2014-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      相关资源
      最近更新 更多