open_sockets = []
listening_socket = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
listening_socket.bind( ("", 1234) )
listening_socket.listen(5)
while True:
rlist, wlist, xlist = select.select( [listening_socket] + open_sockets, [], [] )
for i in rlist:
if i is listening_socket:
new_socket, addr = listening_socket.accept()
open_sockets.append(new_socket)
else:
data = i.recv(1024)
if data == "":
i.close()
open_sockets.remove(i)
print "Connection closed"
else:
i.send(data)
print repr(data)
现在我知道这是可以处理几个客户端的简单服务器代码 - 我唯一不明白的是这两行:
data = i.recv(1024)
if data == "":
我知道当客户端已经接受时,它将转到另一个选项,即检查缓冲区中是否有东西的选项。我不明白为什么,当缓冲区中没有任何内容时,它会继续运行并且不检查该行:
if data == "":
但是当客户端只是按下回车相当于""
它断开连接
为什么当什么都没有被按下时它不一样""
?