簡體   English   中英

python:使用socket.recv()循環

[英]python: loop with socket.recv()

你知道為什么這個循環不會中斷嗎?

#!/usr/bin/env python

from socket import *
import os
import sys

if __name__ == '__main__':
 HOST = '127.0.0.1'
 PORT = 55554

 print 'Creating socket'
 socketProxy = socket(AF_INET, SOCK_STREAM)

 print 'bind()'
 socketProxy.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
 socketProxy.bind((HOST, PORT))

 print 'Waiting for connection request'
 socketProxy.listen(1)
 conn, addr = socketProxy.accept()

 print 'Connected to ', addr

 request = ''

 while True:
    data = conn.recv(16);
    if not data: break
    request = request+data


print request
sys.stdout.flush()

我正在編寫一些服務器代理,以獲取可以任意長的請求,因此必須等待直到收到所有請求。 無論如何,這個循環(當len(data)== 0時)不會停止,而是繼續等待。 我該如何阻止它? 謝謝

一種解決方案是使套接字不阻塞。 然后,您將循環接收,直到不再接收到任何數據為止。 如果沒有收到數據(即request為空),則連接已關閉,否則您有請求。

收到請求后,將其發送到實際服務器,並在等待答復時執行與上述相同的操作。 將回復發送給客戶端。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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