【发布时间】:2011-11-07 22:32:14
【问题描述】:
如何检查来自recvfrom() 的消息在 Windows 上的 C 或 C++ 中的大小是否正确?
谢谢。
【问题讨论】:
-
什么是 Visual Studio 3.0? .NET 与此有什么关系?您是指“Visual Studio .NET 2003”附带的 Visual C++ 编译器吗?
标签: c++ c windows winapi sockets
如何检查来自recvfrom() 的消息在 Windows 上的 C 或 C++ 中的大小是否正确?
谢谢。
【问题讨论】:
标签: c++ c windows winapi sockets
recvfrom 返回实际接收到的数据报的字节数。
你只需要
if (iResult < 0) { /* network error */ }
if (iResult != BufLen) { /* wrong size */ }
老答案,离题
您应该声明一个变量来保存大小,并将其地址作为fromlen 参数传递。
recvfrom会填写datagram发件人地址的实际大小(IP和端口,所以你可以根据需要回复)。
然后您可以根据您的预期测试实际尺寸。
【讨论】:
fromlen 参数获取的是发送者地址(IP 和端口)的大小,而不是数据包的大小。包内容的大小就是返回值。修正了我的答案。