Python侦听不同线程中的端口

2024-09-28 03:21:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用python 3.*创建多个端口的侦听器。我里面有密码实用工具.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]))

它是从另一个文件中调用的

^{pr2}$

我在单线程工作。但现在我有了多线程的以下代码:

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被清除了。在


Tags: inpyselftargetportdefutilssocket

热门问题