2015-12-07 3 views
0

Im создает систему p2p, когда одноранговые узлы постоянно прослушивают входящие соединения (новые сверстники) и отправляют команды через терминал (пользовательский ввод) другим аналогам. Мне сложно искать пользовательский ввод с клавиатуры, всегда ищущих новых сверстников.неблокирующий ввод клавиатуры python

print 'Listening...' 
while not shutdown: 
    while sys.stdin in select.select([sys.stdin], [], [], 0)[0]: #look for keyboard input... not working 
     line = sys.stdin.readline() 
     if line: 
     send_message(line) 
     else: # an empty line means stdin has been closed 
     print('eof') 
     exit(0) 

    try: # listen for other peers 
     clientsock,clientaddr = mySocket.accept() 
     print 'Incoming connection from', clientaddr 
     clientsock.settimeout(None) 
     t = threading.Thread(target = HandlePeer, args = [clientsock]) 
     t.start() 
    except KeyboardInterrupt: 
     print "shutting down" 
     shutdown = True 
     continue 
    except Exception,e: 
     print 'error in peer connection %s %s' % (Exception,e) 

mySocket.close() 

HandlePeer проверяет входящие сообщения от вновь подключенного партнера. Мне просто нужен способ отправки сообщений.

ответ

1

Короткий ответ: вам нужно использовать curses.

Его намного сложнее, чем просто позвонить input() и получить ответ, но это то, что вам нужно. Существует хороший ресурс под названием Curses Programming with Python, который является лучшим местом для начала.

Смежные вопросы