你知道为什么这个循环没有中断吗?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)不停止并且它一直在等待。我怎样才能阻止它? 谢谢
客户端不关闭/关闭套接字,也许? – 2013-02-13 13:12:28
你确定它不会简单地挂在'conn.recv(16)'处,因为套接字没有收到任何数据? – sloth 2013-02-13 13:12:35
是的,客户端没有关闭套接字,因为它等待着答案...... – user1576208 2013-02-13 13:17:32