我有很多进程在运行,通过套接字相互发送消息。其中,有两个进程,第一个向另一个发送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/