[英]How to continuously read data from socket in python?
問題是我不知道我將從套接字接收多少字節,所以我只是試圖循環。
buffer = ''
while True:
data, addr = sock.recvfrom(1024)
buffer += data
print buffer
據我了解, recvfrom
僅返回指定的字節大小,並丟棄其他數據,是否有可能以某種方式連續讀取此數據到緩沖區變量?
它不會丟棄數據,只會在下一次迭代中返回數據。 您在代碼中所做的工作是完全正確的。
我唯一要更改的是打破循環的子句:
buffer = ''
while True:
data, addr = sock.recv(1024)
if data:
buffer += data
print buffer
else:
break
空字符串表示根據文檔說明連接已斷開
如果此代碼仍然不起作用,那么最好向我們展示如何設置套接字。
我建議使用readline作為緩沖區,並使用“ \\ n”作為行之間的分隔符:
#read one line from the socket
def buffered_readLine(socket):
line = ""
while True:
part = socket.recv(1)
if part != "\n":
line+=part
elif part == "\n":
break
return line
當您想要緩沖而不關閉套接字時,這很有用。
如果沒有數據發送,則sock.recv(1024)將掛起,除非您關閉另一端的套接字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.