2014-05-19 30 views
1
用TCP套接字接收的所有數據

我想從一個TCP連接的數據使用Python作爲編程語言(僅適用於客戶端),如何檢查是否在Python

不過,我可以看到,所有的數據沒有收到一次,並在接收過程中被切斷...我可以在論壇上看到,TCP沒有以正確的順序發送數據(這是一個有點隨機,鏈接:Python socket receive - incoming packets always have a different size),我錯了嗎?

我的問題是,如果有反正確保我正確接收所有數據?

預先感謝您的幫助和答覆,

PS:我已經增加socket.recv()的緩衝區大小,但仍面臨着同樣的問題......而我只是CentOS的

下工作

編輯:(不能回答我的問題:(不過初學者在這個論壇:))

嗨,

非常感謝您的回覆,我確實也不必擔心TCP連接:)

調查更後,我終於可以找到解決辦法......(我正在尋找在這裏張貼我的問題前幾天),

如果有人需要一個答案,在Python中,你必須等待完整的郵件,否則該信息可以被切割,所以這意味着:

數據= s.recv(1024,socket.MSG_WAITALL) - >的'是在Python代碼中創建一個套接字對象,

此致

回答

1

使用套接字API,您不必擔心TCP(排序,重傳s和whatnot),這一切都被操作系統所照顧。唯一的是socket.recv()將返回最多 n個字節。這意味着不保證您在每個阻塞讀取時都會收到n個字節。因此,您必須循環讀取,直到您收到所需的字節數。

相關問題