recv()仅从Windows 8上的环回获取1460字节

recv()仅从Windows 8上的环回获取1460字节,windows,sockets,ipc,Windows,Sockets,Ipc,我对IPC使用环回,数据包大多超过4KB。我发现,如果我经常使用两个线程(共享同一个套接字)从客户机发送(),有时服务器只接收1460字节(似乎是以太网的MTU?)和一个recv()。原因是什么?谢谢。您使用的是数据报(UDP)还是流(TCP)?如果是流,则不能保证接收将与发送发生在相同的消息边界上。您将在对recv()的后续调用中获得剩余数据。如果消息边界对您很重要,那么您需要以某种方式在消息中对其进行编码(例如使用指示消息长度的标题或某种分隔符)。@MichaelBurr Hi。我正在使用T

我对IPC使用环回,数据包大多超过4KB。我发现,如果我经常使用两个线程(共享同一个套接字)从客户机发送(),有时服务器只接收1460字节(似乎是以太网的MTU?)和一个recv()。原因是什么?谢谢。

您使用的是数据报(UDP)还是流(TCP)?如果是流,则不能保证接收将与发送发生在相同的消息边界上。您将在对
recv()
的后续调用中获得剩余数据。如果消息边界对您很重要,那么您需要以某种方式在消息中对其进行编码(例如使用指示消息长度的标题或某种分隔符)。@MichaelBurr Hi。我正在使用TCP。我曾经相信在环回通信中没有碎片。。。现在这似乎是错误的。因此,我在数据包中添加了一个大小字段来检查完整性:)。您不需要大小字段。您只需注意
recv()返回的计数值。