多和插座(Multiprocessing and Sockets)

2019-09-20 00:20发布

我想使用多插座允许同一插座多个连接。 但是,我有一个真正的困难时期,因为我没有在这一领域的很多经验。

我的代码无法正常工作

def server(port, listen=10):
    connected = []
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind(('', port))
    s.listen(listen)

    while True:

        conn, address = s.accept()
        p = multiprocessing.Process(target=server, args=(port, listen))
        p.start()
        p.join()
        command = raw_input("Command: ")
        conn.send(command)  

谢谢您的帮助

Answer 1:

这是因为你试图在循环中创建多个服务器。 单服务器suffucient您的任务,无需打开多个监听套接字。 每一个本地端口可以最多由一个监听套接字绑定 - 这就是为什么你看到的“地址在使用”错误。

尝试一下Python标准TCPServer类,这可能是比低级别的插座打扰方便多了。

对于线程服务器看到这个例子 。

在OS插座的水平,该方案只需要一个监听套接字,这将接受一个新的连接(这是socketry的标准方式),当每次产生新的插座。 然后你会在单独的线程新的socket工作(记住访问线程之间共享通用数据)。



文章来源: Multiprocessing and Sockets