【问题标题】:How do I check the message size from recvfrom()?如何从 recvfrom() 检查消息大小?
【发布时间】: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


【解决方案1】:

recvfrom 返回实际接收到的数据报的字节数。

你只需要

if (iResult < 0) { /* network error */ }
if (iResult != BufLen) { /* wrong size */ }

老答案,离题

您应该声明一个变量来保存大小,并将其地址作为fromlen 参数传递。

recvfrom会填写datagram发件人地址的实际大小(IP和端口,所以你可以根据需要回复)。

然后您可以根据您的预期测试实际尺寸。

【讨论】:

  • @Tommy:真的很抱歉,fromlen 参数获取的是发送者地址(IP 和端口)的大小,而不是数据包的大小。包内容的大小就是返回值。修正了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-06
相关资源
最近更新 更多