【发布时间】:2016-04-28 09:54:39
【问题描述】:
所以我对网络非常陌生,我使用 Python Socket 库连接到正在传输位置数据流的服务器。
这是使用的代码。
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 建立与服务器的原始连接时,我只能得到正确的形式,而不是拆分。所以我想一定是发生了什么事情正在分裂信息。或者腻子正在做的事情总是正确地组装它。
我需要的是变量data 始终包含正确的行。知道如何做到这一点吗?
【问题讨论】:
-
它发生在 tcp 和套接字上。理论上它可以一次到达一个字节。您的代码需要再次将其缝合在一起。至于实现这一点的方法,您可以将标头合并到数据包中。如果您将前 2 或 4 个字节作为数据的长度,那么重新组合起来应该很简单。
-
在此处查看答案,详细了解为什么会发生这种情况:stackoverflow.com/a/1716173/2372812
标签: python sockets networking tcp client