因此,我对网络非常陌生,我使用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 –