2014-04-29 9 views
5

Chcę funkcji sprawdzania, czy dane oczekują w gnieździe do odczytu przed przeczytaniem. Coś takiego byłoby pomocne:Sprawdź, czy dane dostępne w gniazdach w pythonie

if (data available) then read data 

else wait in blocking mode till data becomes available 

Jak mogę to osiągnąć w Pythonie

+0

To co robi 'wywołanie systemowe select' dla Ciebie. https://docs.python.org/2.7/library/select.html – squiguy

+0

@ Czy możesz dać mi mały przykład? –

Odpowiedz

4
while 1: 
    socket_list = [sys.stdin, s] 
    # Get the list sockets which are readable 
    read_sockets, write_sockets, error_sockets = select.select(socket_list , [], []) 
    for sock in read_sockets: 
    #incoming message from remote server 
    if sock == s: 
     data = sock.recv(4096) 
     if not data : 
     print '\nDisconnected from server' 
     sys.exit() 
     else : 
     #print data 
     sys.stdout.write(data) 


    #user entered a message 
    else : 
    msg = sys.stdin.readline() 
    s.send(msg) 
Powiązane problemy