2011-01-27 55 views
0

我試圖通過TCP套接字從android客戶端發送多個數據項到python服務器。客戶端的用戶可以做出多種選擇,以便使用作爲字符發送的號碼來區分請求類型。我必須根據選擇發送選擇和具體數據。對於當前的選擇(在這種情況下選擇無1),我需要選擇和2個字符串字段和圖像。我有圖像傳輸自己的工作,並選擇自己的工作。我現在遇到的問題是,選擇中的緩衝區讀數也在圖像的字節流中讀取。可區分的套接字輸入

回答

2

如果在發送數據包之前寫入數據包,TCP會將您的寫入操作合併到一個數據包中,這意味着信息將被連接在一起。

一個常見的解決方案是在你的數據之前加入一個「操作碼」。 例如,在發送整數之前加上CHOICE前綴。當你在你的python腳本中閱讀CHOICE時,你知道你正在接收一個整數,從而只讀取那麼多的數據。 在發送圖像之前,請在IMG前加上要讀取的字節數。這樣您可以根據需要讀取儘可能多的字節,然後查找下一個操作碼。然後

你的包應該是這樣的:CHOICE1IMG<number of bytes><image bytestream>

顯然你的操作碼可以是任何你想要的,這只是一個例子。

+0

嗨Eric,謝謝你回到我身邊。我明白你的意思,但我不確定最好的辦法是什麼?是否將全部轉換爲大量字符串,包括二進制數據併發送? – Shpongle 2011-01-31 23:02:40