我已经写了一个服务器 - 客户端程序,我要问:有没有在的recv()函数的32位和64位操作系统之间的行为有什么区别。的Recv()的行为32位和64位操作系统之间的差异
我问这个,因为我在64位的笔记本电脑运行在服务器和客户端,一切工作正常。我以这种方式调用recv():while((tmp = recv(client_sock,rec_msg,256,0))>0)
并且如预期的那样,例如,我有3个字符串从客户端发送,在服务器部分它输入3次,并打印正确的结果。
当我在32位Debian机器上运行完全相同的程序时,似乎出于某种未知原因,例如,如果我从客户端发送3个字符串,它将只进入服务器部分的while循环,并接收3个字符串作为一。
我已经使用打印语句,并发现它进入while循环一次,并接受所有的缓冲虽然在客户端部分,而进入循环3次预期和3串在3个不同时间发送。我无法找到一个合理的理由,为什么它在64位工作正常,而不是在32位工作,这就是为什么我问这个问题。
在此先感谢您的时间和您的帮助。
您是否在32位和64位版本中使用相同的操作系统?它可能不一定是处理器体系结构的差异,但可能是系统调用的OS /驱动程序处理? –
谢谢你的答案。没有我使用不同的操作系统...薄荷在第一个案件和Debian在第二个。但我不认为这是造成差异。造成这种差异的原因(边界不维持),是可能是在下面的答案中解释的那些。 – SpyrosR