簡體   English   中英

如何在python中從套接字連續讀取數據?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM