您好我正在尝试使用python的SocketServer.TCPServer
问题here没有给出任何解决方案并且因为不清楚而关闭
我的示例代码
class MyTCPHandler(SocketServer.BaseRequestHandler):
def handle(self):
# self.request is the TCP socket connected to the client
self.data = self.request.recv(1024).strip()
print "{} wrote:".format(self.client_address[0])
print self.data
time.sleep(5)
# just send back the same data, but upper-cased
self.request.sendall(self.data.upper())
print 'done handing request from {0}'.format(self.client_address[0])
if __name__ == '__main':
HOST = socket.gethostname()
PORT = int(sys.argv[1])
server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)
server.serve_forever()
问题是重启服务器时说的
socket.error: [Errno 98] Address already in use
查看server.shutdown()
中SocketServer.TCPServer
正在做什么。
它没有关闭任何套接字,所以我尝试在另一个线程中运行它,通过调用来处理服务器的关闭
server.shutdown()
server.server_close()
尝试将通话顺序更改为shutdown()
和server_close()
我仍然得到socket.error: [Errno 98] Address already in use
我使用curl
命令进行测试。
使用netstat
我可以看到端口处于TIME_WAIT
状态