在阅读udp之前找到sockaddr信息

时间:2013-04-18 22:34:52

标签: c++ c sockets

无论如何,我是否可以从传入的数据包中获取sockaddr信息而不首先对数据执行recvfrom?我只是想知道你可以告诉我有什么东西要像民意调查一样阅读或选择我想知道我是否可以在实际读取发送的数据之前从中提取更多信息。我问这个是因为我有一个系统,其中每个单独的ip / port组合都有自己的内部缓冲区,我们将chunked消息放入其中,我需要知道,以便我可以将它放在正确的内部缓冲区中。

1 个答案:

答案 0 :(得分:1)

是的,通过向recvfrom电话提供MSG_PEEK标志。

recvfrom(socket, buffer, 1, MSG_PEEK, &address, &address_len);

这将使数据报保持原样而不会将其删除。您当然可以为缓冲区大小指定一个较小的值,以减少不必要的读取开销。下次执行正常recvfrom时,数据报将正常删除。

recvfrom(socket, buffer, length, 0, &address, &address_len); // Do the actual read