【发布时间】:2017-12-31 18:15:56
【问题描述】:
Socket.SendTo 的返回值是一个int,表示实际从缓冲区发送的字节数。这是否意味着可以发送部分数据报,其中仅包含请求发送的部分数据?
如果是这样,程序员在收到数据报时是否需要做任何工作来重组数据报,或者是否透明地处理?
为了清晰起见,对这个旧问题进行了彻底检查,以便对未来的搜索者更有帮助。
【问题讨论】:
-
'假设所有数据都没有发送' - 好吧,你检查了吗?您不能发送少于整个数据报的任何内容(没有数据报除外)。但是,如果不够大,您可以将不到整个数据报复制到您的 rx 缓冲区中。
-
如果 SendTo 没有返回错误,则应该发送整个数据报。如果它确实返回错误,则不会发送任何内容。不存在发送部分数据报的问题——它不会发生。如果您在 UDP 之上有一些安全协议可以识别对等方丢失的数据报并通知遗漏,那么您将始终必须重新发送整个数据报。
-
@MartinJames 你能提供一些参考吗?我是套接字编程的新手。我也被告知。谢谢