有没有办法找出用户是否在终端窗口中输入了任何数据而不必使用阻塞stdin
。
我正在使用twisted python 实现一个聊天客户端,客户端代码应该显示来自其他连接客户端的消息。一旦客户端输入一条消息并按回车键,我希望它运行一个事件驱动循环,将消息发送到服务器,然后将其广播给其他所有客户端。
简而言之,我正在尝试寻找一种方法来检测用户何时按下 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
关于如何让这个拾取用户输入的数据以及继续从服务器获取数据的任何建议?