2012-12-20 7 views
0

나는 여러 클라이언트/이웃을 연결하는 UDP 프로그램을 만들고 있습니다. 모든 사용자가 동일한 프로그램을 사용하는 서버가 없습니다. localhost로 테스트하려고하고 있으므로 모든 IP와 이웃 포트가 의도 한대로 작동하는 것으로 간주합니다. 127.0.0.1을 모두 IP로 사용하고 다른 포트에 연결. 그럼 내 질문은 내가 while 루프 전에 보내는 시작 데이터를 수신하지만 아무 것도 보낼 수 없다는 것입니다. sys.stdin에서 뭔가 잘못하고있는 것 같습니다.선택으로 파이썬 UDP 프로그램 다중 연결

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

input 그래서 i는 항상 x == sys.stdin 결코 그렇게 만 else 절은 지금까지 실행됩니다, (x 항상 s 때문에) True 될 것 없다, [s] 될 것입니다, 항상 [s]입니다.

어쩌면 input = [s, sys.stdin]을 의미할까요?

+0

네가 맞을 수도 있습니다. for 및 if 절을 대신 어떻게 수행합니까? – geolykos

+0

여전히 작동하지 않았습니다. 소켓을 목록에 추가하는 것만 둡니다. 내 if 절에 문제가 있습니다. – geolykos