UDP recv/recvfrom多个发件人

Ian*_*Ian 3 c++ udp recv

美好的一天,

我正在用VC++开发一个应用程序,它在Windows XP上使用UDP协议和winsock进行通信.以前我已经能够假设该工具接收的所有数据包都来自单个目标.但是我现在正在接收广播.监听线程的开销很小,应该将所有时间都花在下面的行上:

rv = recvfrom(socket, 
              p_buffer_p, 
              p_size,
              0,
              (sockaddr*)&clientService_in, //This is set to do a broadcast recv
              &SenderAddrSize);
Run Code Online (Sandbox Code Playgroud)

我的问题是我是否可以假设我从recvfrom返回的缓冲区来自单个目标.也就是说,发送应用程序中的1个调用发送应用程序等于从接收应用程序中的recvfrom返回1?或者多个发件人的多个发送可以合并为1?

我假设来自目标的单个发送不能从recvfrom分成多个返回.我一直都是这样,从来没有遇到任何问题.

还有一件事,它是一个SOCK_DGRAM类型的套接字.

INS*_*INS 6

不,UDP消息不能拆分.他们在被送出时到达.此外,不会连接多个UDP消息.

所以N sendto消息对应于N recvfrom呼叫.

来自wiki的引用:

数据报 - 数据包是单独发送的,只有在到达时才会检查其完整性.数据包具有明确的边界,这些边界在接收时受到尊重,这意味着接收器插槽上的读取操作将产生最初发送的整个消息.