为了账号安全,请及时绑定邮箱和手机立即绑定

如何防止python套接字消息在控制台中重叠?

如何防止python套接字消息在控制台中重叠?

哔哔one 2021-11-30 16:17:48
我有一个 Python 聊天系统,它使用 1 个线程进行用户输入,使用另一个线程进行消息接收和打印。问题是:如果我在接受用户输入的同时收到一条消息,则消息中的文本最终会出现在输入行而不是它自己的单独行上。我将如何处理这个?我的代码的简短版本:def receive(cl,buffer):    msg = str(cl.recv(1024).decode())    print(msg)_thread.start_new_thread(receive,(client,1024,))while True:    msg = input("message:")    send(message)例如:如果我在控制台中编写“hello server”时从服务器收到“hello world”,它看起来像这样“你好世界消息:你好服务器”
查看完整描述

2 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

理想情况下,输入和输出使用两个不同的窗口。考虑现有的聊天应用程序,其中有一个窗口来键入您的消息,与显示您的消息和其他用户的消息的窗口分开。否则,您可以在输入另一条消息时输入。

或者,使用 athreading.Lock()来序列化输出。只有持有锁的线程才能输出。不幸的是,如果您有:

with lock:
    msg = input('message: ')

在您完成输入消息之前,没有其他线程可以打印任何内容。使用单独的窗口进行输入和输出的另一个原因。


查看完整回答
反对 回复 2021-11-30
?
aluckdog

TA贡献1847条经验 获得超7个赞

我决定为系统制作一个 GUI,这样我就可以在一个小部件中显示传入的消息并处理来自另一个小部件的输入。


查看完整回答
反对 回复 2021-11-30
  • 2 回答
  • 0 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信