你知道为什么这个循环没有破坏吗?
#!/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(数据)== 0)没有停止并且它一直在等待。我怎么能阻止它? 感谢
答案 0 :(得分:1)
一种解决方案是使套接字无阻塞。然后在循环中收到,直到不再收到数据。如果没有收到任何数据(即request
为空),则表示连接已关闭,否则您有请求。
当您收到请求时,请将其发送到实际服务器,并在等待回复时执行与上述相同的操作。将回复发送给客户。
答案 1 :(得分:0)
您可以尝试设置超时时间,请参阅Python socket recv data in while loop not stopping