0

我正在制作一个连接多个客户端/邻居的 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()
4

1 回答 1

0

inputis always [s], so iis always going to be [s], so x == sys.stdinis never going to be True(因为xis always s),所以只有else子句才会执行。

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

于 2012-12-20T20:33:25.117 回答