[英]Python UDP program multiple connections with select
我正在制作一个连接多个客户端/邻居的UDP程序。 没有服务器,每个人都使用相同的程序。 我正在尝试使用localhost进行测试,因此请考虑邻居的所有IP和端口均按预期工作。 全部使用127.0.0.1作为IP并连接到不同的端口。 所以我的问题是,为什么我会收到在while循环之前发送的启动数据,但无法发送任何启动数据? 似乎我对sys.stdin做错了。
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((HOST, PORT))
going = True
input = [s]
while going:
i,o,e = select.select(input,[],[],)
try :
for x in i:
if x == sys.stdin:
data = sys.stdin.read()
for i in neighbors:
addr = (i[1][0], int(i[1][1]))
s.sendto(data, addr)
else:
msg, addr = s.recvfrom(100)
print msg
except socket.error, msg:
print 'Error Code : ' + str(msg[0]) + ' Message ' + msg[1]
sys.exit()
s.close()
input
始终为[s]
,因此i
始终将为[s]
,因此x == sys.stdin
永远不会为True
(因为x
始终为s
),因此仅else
子句将始终执行。
也许您是说input = [s, sys.stdin]
?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.