因此,我對網絡非常陌生,我使用Python Socket庫連接到傳輸位置數據流的服務器。Python套接字接收到來自服務器的不一致消息
這裏是使用的代碼。
import socket
BUFFER_SIZE = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((gump.gatech.edu, 756))
try:
while (1):
data = s.recv(BUFFER_SIZE).decode('utf-8')
print(data)
except KeyboardInterrupt:
s.close()
問題是數據以不一致的形式到達。
大多數它到達正確的形式是這樣的時代:
2016-01-21 22:40:07,441,-84.404153,33.778685,5,3
但其他時候可以到貨分成兩行,像這樣:
2016-01-21
22:40:07,404,-84.396004,33.778085,0,0
有趣的是,當我使用Putty建立到服務器的原始連接時,我只能得到正確的表單而不能拆分。所以我想象一下,發生了一些分裂信息的事情。或者是Putty正在做的事情,以便始終正確地組裝它。
我需要的是變量data
始終包含適當的行。任何想法如何做到這一點?
它發生在TCP和套接字。理論上它可以一次達到一個字節。你的代碼需要重新拼接起來。至於如何實現這一點,你可能會在你的數據包中加入一個頭文件。如果您將前兩個或四個字節作爲數據的長度,則重新組裝應該很簡單。 –
請參閱此處的答案,瞭解爲什麼會發生這種更詳細的描述:http://stackoverflow.com/a/1716173/2372812 –