首页 > 解决方案 > 解复用来自不同来源的 udp 流

问题描述

我的服务器使用单个 udp 套接字来接收来自不同 IP 地址的 udp 流。(所有发件人发送到同一个端口)。当 recv 在服务器上返回一大块数据时,该块可能包含来自不同来源的字节吗?假设不是,是否有可靠的方法来确定哪个发件人发送了整个块?

标签: socketsudp

解决方案


在 UDP 中,接收到的每个块都将与发送者之前传递给 'send()' 或 'sendto()' 的内容完全相同——与 TCP 不同,UDP 维护消息边界。

你可以通过调用'recvfrom()'而不是'recv()'来找出接收到的数据包的IP地址和端口。这些值将被写入您提供指向的“struct inaddr_in”中。


推荐阅读