我已经编写了一个服务器-客户端程序,我想问一下:在 32 位和 64 位操作系统之间,recv() 函数的行为有什么不同。
我问这个是因为我在 64 位笔记本电脑上同时运行服务器和客户端,并且一切正常。我以这种方式调用 recv() :while((tmp = recv(client_sock,rec_msg,256,0))>0)
并且正如预期的那样,例如,如果我有 3 个字符串要从客户端发送,在服务器部分它会输入 while 3 次并打印正确的结果。
当我在 32 位 Debian 机器上运行完全相同的程序时,似乎由于某种未知的原因,如果我从客户端发送 3 个字符串,它只进入服务器部分的 while 循环一次,并将 3 个字符串作为一个接收。
我使用了 print 语句,发现它一次进入 while 循环并接收所有缓冲区,尽管在客户端部分 while 循环按预期输入了 3 次,并且在 3 个不同的时间发送了 3 个字符串。我找不到为什么它在 64 位上工作正常而在 32 位上工作不正常的合乎逻辑的原因,这就是我问这个问题的原因。
提前感谢您的时间和帮助。