Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 多处理和套接字_Python_Sockets_Multiprocessing - Fatal编程技术网

Python 多处理和套接字

Python 多处理和套接字,python,sockets,multiprocessing,Python,Sockets,Multiprocessing,我正在尝试使用多处理和套接字来允许多个连接到同一个套接字。然而,我的日子很艰难,因为我在这个领域没有太多经验 我的代码不起作用 def server(port, listen=10): connected = [] s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('', port)) s.listen(listen) while True: conn, addr

我正在尝试使用多处理和套接字来允许多个连接到同一个套接字。然而,我的日子很艰难,因为我在这个领域没有太多经验

我的代码不起作用

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)  

感谢您的帮助

这是因为您正在尝试在循环中创建多个服务器。单台服务器对您的任务来说非常有用,无需打开多个侦听套接字。每个本地端口最多可以被一个侦听套接字绑定——这就是为什么您会看到“Addressin use”错误

试试Python标准类,这比使用低级套接字要方便得多

有关线程服务器,请参阅


在OS套接字级别,此方案只需要一个侦听套接字,每次接受新连接时都会生成新套接字(这是socketry的标准方式)。然后,您将在单独的线程上使用新套接字(请记住访问线程之间共享的公共数据)。

您的端口是什么?请与_netstat-na | grep确认没有其他进程正在使用该端口。不,这不是问题所在,因为当我向客户端发送数据时,它会通过。这是一个多处理问题。好吧,我去掉了错误,因为这不是我的问题。我消除了错误。我只需要多个连接就可以使用多处理连接到同一个套接字。实际上,多处理文档讨论了这一点。请参阅“http服务器池共享单个侦听套接字的示例”附近的()。