Python UDP程序与select的多个连接

时间:2012-12-20 19:09:52

标签: python 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()

1 个答案:

答案 0 :(得分:0)

input始终为[s],因此i始终为[s],因此x == sys.stdin永远不会是True(因为x总是s),所以只会执行else子句。

也许你的意思是input = [s, sys.stdin]