我正在使用python2.7开发TCP聊天室,我的服务器应该管理多个客户机(我使用select模块)和客户机线程,我在打印什么时遇到了问题。 因为我在客户机中的原始输入包含文本,所以当负责打印其他客户机消息的另一个线程被触发时,它很容易变得难看。你知道吗
我的代码的结果如下所示:(在客户端窗口上)
WELCOME TO CHATROOM
you are connected
your pseudo is PSEUDO
other_user joined the chatroom
我的原始输入()会弹出如下:
* < your message > * :e chatroom
或者有时我通过原始输入文本收到另一个用户的消息
因为它替换了最后一行打印的内容,所以我想如果最后一行打印的内容等于我的原始输入文本,我可以删除它,在上面打印一条意外的消息,然后重新打印我的原始输入,但我不知道如何实现它。你知道吗
我尝试过用“\x1b[”-类命令移动光标并删除最后打印的行,但这些命令对我无效。你知道吗
class Sender(Thread):
"""would send messages to the server"""
def __init__(self, socket, username):
Thread.__init__(self)
self.socket = socket
self.username = username
def run(self):
while 1:
message = raw_input("* < your message > * :")
self.socket.send(message)
class Receiver(Thread):
import sys
def __init__(self,socket):
Thread.__init__(self)
self.connexion = socket
def run(self) :
while 1:
message_received = self.connexion.recv(4096)
message_received = message_received.decode()
sys.stdout.write("\r" + message_received)
sys.stdout.flush()
if message_recu =='' or message_recu.upper() == "OFF":
break
self._Thread__stop()
print "\nClient arrete. Connexion interrompue."
self.connexion.close()
要使
\b
和\r
正常工作,您需要用空格而不是换行符来结束print语句。你知道吗例如:
print 'hello there',
print
语句末尾的,
定义它不会向前一行,而是以空格结束。然后可以使用另一个print语句删除文本。你知道吗例如:
print '\r '
这将转到行的开头并用空格替换它,然后您可以在上面输出文本。你知道吗相关问题 更多 >
编程相关推荐