多网络套接字python
我正在创建一个python脚本,它侦听多个端口(在portslist中定义),当有人连接到其中任何一个端口时,会向他们发送一条“hello”消息。目前,下面的代码为端口列表中的所有端口创建套接字,但只向最后一个端口上的通信发送消息 谢谢多网络套接字python,python,sockets,select,network-programming,Python,Sockets,Select,Network Programming,我正在创建一个python脚本,它侦听多个端口(在portslist中定义),当有人连接到其中任何一个端口时,会向他们发送一条“hello”消息。目前,下面的代码为端口列表中的所有端口创建套接字,但只向最后一个端口上的通信发送消息 谢谢 servers = [] for port in portlist: datasocket = ("0.0.0.0", port) server = socket.socket(socket.AF_INET, socket.SOCK_STREA
servers = []
for port in portlist:
datasocket = ("0.0.0.0", port)
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind(datasocket)
server.listen(5)
servers.append(server)
while True:
ready_server = select.select(servers, [], [])
for s in ready_server:
connection, address = server.accept()
print str(address) + " has connected!\n"
msg ="hello\n"
connection.send(msg)
connection.close()
当
select.select
返回时,ready\u server
将是如下列表:
因此,ready_server中s的将迭代这些列表,而不是套接字
此外,该循环中的server.accept()
并不引用任何循环变量,而是引用上一个循环中的server
试试这个:
servers = []
for port in portlist:
datasocket = ("0.0.0.0", port)
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind(datasocket)
server.listen(5)
servers.append(server)
while True:
# unpack the returned list
ready_server, _, _ = select.select(servers, [], [])
for s in ready_server:
# use s.accept instead of server.accept
connection, address = s.accept()
print str(address) + " has connected!\n"
msg ="hello\n"
connection.send(msg)
connection.close()
首先,您在while
循环下的缩进不好