python套接字服务器 - 即使客户端断开也继续监听
这个运行得很好
#!/usr/bin/python
import urllib
import socket
import os
s = socket.socket()
host = socket.gethostname()
port = 1514
s.bind((host, port))
s.listen(500)
c, addr = s.accept()
while True:
# Establish connection with client.
print 'Got connection from', addr
print c.recv(1024)
c.send('Recieved')
c.close()
raw_input()
但是有几点需要注意:
当客户端断开连接时,程序就会关闭。我想让它在客户端断开后,仍然继续等待新的连接。
我该如何让它无限期地等待连接呢?
1 个回答
2
你可以在外面加一个 while True
的循环,然后在里面用 try/except 来处理连接关闭的情况。换句话说,accept()
可以在一个循环里反复调用。
不过,通常更“正确”的做法是使用异步或事件驱动的方式,就像 Python 的 Twisted 库实现的那样。这样你就可以同时接收多个客户端的连接,而不需要等一个连接关闭后才能接下一个。