Вы знаете, почему этот цикл не прерывается?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) не останавливается, и он продолжает ждать. Как я могу остановить его? Thanks
Клиент не выключает/закрывает сокет, может быть? –
Вы уверены, что это не просто зависает на 'conn.recv (16)', потому что сокет не получает никаких данных? – sloth
Да, клиент не закрывает сокет, потому что он ждет ответа ... – user1576208