我正在尝试使用多处理和套接字来允许多个连接到同一个套接字。但是,我真的很难过,因为我在这个领域没有多少经验。
我的代码无效
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)
感谢您的帮助
答案 0 :(得分:0)
这是因为您尝试在循环中创建多个服务器。单个服务器适合您的任务,无需打开许多侦听套接字。每个本地端口最多可以绑定一个侦听套接字 - 这就是您看到“正在使用的地址”错误的原因。
试用Python标准TCPServer
类,这比打扰低级套接字要方便得多。
对于线程服务器,请参阅this example。
在OS套接字级别,此方案只需要一个侦听套接字,每次接受新连接时都会生成新套接字(这是标准的socketry方式)。然后你将在单独的线程上使用新的套接字(记住访问线程之间共享的公共数据)。