簡體   English   中英

Python UDP程序與select的多個連接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM