【发布时间】:2017-08-16 16:37:03
【问题描述】:
在我需要 var data 以换行符 \n 结束的情况下,处理套接字连接的最佳方法是什么?
我正在使用下面的代码,但有时tcp 数据包会分块,并且需要很长时间才能匹配data.endswith("\n")。
我还尝试了其他方法,例如如果最后一行不以\n 结尾,则保存它,并将其附加到下一个循环中的data。但这也不起作用,因为多个数据包被分块并且第一和第二部分不匹配。
我无法控制另一端,它基本上发送多行以\r\n 结尾。
欢迎提出任何建议,因为我对套接字连接了解不多。
def receive_bar_updates(s):
global all_bars
data = ''
buffer_size = 4096
while True:
data += s.recv(buffer_size)
if not data.endswith("\n"):
continue
lines = data.split("\n")
lines = filter(None, lines)
for line in lines:
if line.startswith("BH") or line.startswith("BC"):
symbol = str(line.split(",")[1])
all_bars[symbol].append(line)
y = Thread(target=proccess_bars, kwargs={'symbol': symbol})
y.start()
data = ""
“正常”示例data:
line1\r\n
line2\r\n
line3\r\n
分块示例data:
line1\r\n
line2\r\n
lin
【问题讨论】:
标签: python python-2.7 python-3.x sockets tcp