ブロッキングを使用せずに、ユーザーが端末ウィンドウにデータを入力したかどうかを確認する方法はありますかstdin
。
ツイスト python を使用してチャット クライアントを実装しています。クライアント コードは、接続されている他のクライアントからのメッセージを表示する必要があります。クライアントがメッセージを入力してEnterキーを押すとすぐに、イベント駆動型ループを実行して、メッセージをサーバーに送信し、それを他のすべてのクライアントにブロードキャストします。
つまり、プログラムをブロックすることなく、ユーザーが ENTER を押したり、端末にテキストを入力したりしたことを検出する方法を探しています。
更新: これまでのクライアント コード..
class MyClientProtocol( protocol.Protocol ):
def sendData( self ):
message = raw_input( 'Enter Message: ' )
if message and ( message != "quit()" ):
logging.debug( " ...Sending %s ...", message )
self.transport.write( str( message ) )
else:
self.transport.loseConnection()
def connectionMade( self ):
print "Connection made to server!"
def dataReceived( self, msg ):
print msg
self.sendData()
class MyClientFactory( protocol.ClientFactory ):
protocol = MyClientProtocol
clientConnectionLost = clientConnectionFailed = lambda self, connector, reason: reactor.stop()
reactor.connectTCP( HOST, PORT, MyClientFactory() )
reactor.run()
sendData
このコードは現在、サーバーから何かを受け取った後にユーザー入力のみを受け入れますdataReceived
。これでユーザーが入力したデータを取得し、さらにサーバーからデータを取得し続ける方法について何か提案はありますか?