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服务器池共享单个侦听套接字的示例”附近的()。