你知道为什么这个循环不会中断吗?
#!/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 为空),则连接已关闭,否则您有请求。
当您有请求时,将其发送到实际服务器,并在等待回复时执行与上述相同的操作。将回复发送给客户。
