c - 套接字收到的字节数少于发送的字节数

标签 c sockets recv sendto

我有很多进程在运行,通过套接字相互发送消息。其中,有两个进程,第一个向另一个发送24个字节(我确定它是24个字节,因为我从sendto()的返回值中获取它),但在接收方我只收到了16个字节.

nRecvbytes = recvfrom(sock, recvbuf, recvlen, 0, addr, sa_len)

recvlen 是 24 字节,而 nRecvbytes 是 16 字节。而且这种情况不稳定,因为我运行了很多次,这种情况有时会发生有时不会。有谁知道为什么会发生这种情况? 谢谢!

最佳答案

接收到的字节小于指定长度或发送函数中的数据长度是常见的。

你需要多次调用 receive 直到你得到你想要的数据。数据包可以分解成多个数据包,这可能会导致这种情况。

关于c - 套接字收到的字节数少于发送的字节数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20185489/

相关文章:

android - android中的两个应用程序可以使用本地套接字进行通信吗?

c - recv() 阻止第二次调用

c - 套接字recv函数不返回更新的值

c++ - 我将 C++ vector 数据集转换为 C 数组。我将相同的数据集传递给一个应该提供相同输出的函数

c - 数组的元素是否保证从低地址到高地址存储?

c - 将void *转换为int并返回

java - 使用 ObjectIOStreams 的 Java ServerSocket 和套接字会丢包吗?

sockets - Flash 不再运行调试器。 Windows-10 中可能存在套接字问题吗?

c++ - 将超时设置为 recv 函数

arrays - 使用 array_name 和 &array_name 的地址之间的区别?