我正在制作一个连接多个客户端/邻居的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()
答案 0 :(得分:0)
input
始终为[s]
,因此i
始终为[s]
,因此x == sys.stdin
永远不会是True
(因为x
总是s
),所以只会执行else
子句。
也许你的意思是input = [s, sys.stdin]
?