我在一个与主线程分开的线程中启动了一个简单的 TCP 服务器,监听端口 6677,使用threading.start_new_thread()
. 基本上这个服务器所做的就是:
sock = socket(AF_INET, SOCK_STREAM)
sock.bind(('', 6677))
sock.listen(5)
...
print 'Listening...'
while True:
conn, addr = sock.accept()
print 'connected!'
...
在单独的线程中启动该服务器后,我在主线程中运行了一个简单的 Flask 应用程序:
app.run()
默认使用端口 5000。Flask 应用程序运行良好,但导致 [Errno 98] 地址已在另一个线程的 bind() 调用中使用!这是在从辅助线程打印“Listening ...”之后。这里发生了什么黑魔法?两台服务器不能在同一个地址的不同端口上监听吗?