我想使用python 3.*
创建多个端口的侦听器。我在utils.py
def listenPort(port):
global conn
conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
conn.bind(("", port ))
conn.listen(5)
#now keep talking with the client
while 1:
#wait to accept a connection - blocking call
c, addr = conn.accept()
print('Connected with ' + addr[0] + ':' + str(addr[1]))
是来自其他文件的调用
socket_thread = threading.Thread(target=utils.listenPort, args=( globals.listenPort_first , ))
socket_thread.start()
我在单线程中工作正常。但现在我有以下多线程代码:
import utils
def start_func1():
socket_thread = threading.Thread(target=utils.listenPort, args=( 1998 , ))
socket_thread.start()
# do stuff
def start_func2():
socket_thread = threading.Thread(target=utils.listenPort, args=( 1999 , ))
socket_thread.start()
# do stuff
if __name__ == '__main__':
first_thread = threading.Thread(target=start_func1)
second_thread = threading.Thread(target=start_func2)
first_thread.start()
second_thread.start()
在这种情况下,我收到了错误:
Exception in thread Thread-8:
Traceback (most recent call last):
File "C:\Python32\lib\threading.py", line 740, in _bootstrap_inner
self.run()
File "C:\Python32\lib\threading.py", line 693, in run
self._target(*self._args, **self._kwargs)
File "D:\workspace\daemon-biotrack\utils.py", line 296, in listenPort
conn.bind(("", port ))
socket.error: [Errno 10048] Обычно разрешается только одно использование адреса сокета (протокол/сетевой адрес/порт)
通常,只允许一个人使用套接字地址(协议/网络地址/端口)
有人遇到过这个问题吗?如果您知道任何解决方案,请与我分享。我找到了this post。但似乎SocketServer
已被删除。