我已經寫了一個服務器 - 客戶端程序,我要問:有沒有在的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