1

我正在尝试编写一个聊天客户端和服务器,客户端应该能够从服务器打印消息,同时还在控制台上写一些东西。

所以我创建了一个pthread,它应该读取用户输入,主线程打印来自服务器的messeges。但是,当我输入内容并在收到消息时,我正在输入的文本会被推送到控制台上。我该如何解决?

例如:我正在输入“abcdef”,然后当我从服务器收到消息(但还没有完成输入)时,它将如下所示:

abcdef[Chatuser1]:你好

4

2 回答 2

1

使用信号量或互斥锁等同步技术在多线程程序中同步输入和输出

于 2013-05-05T16:45:28.433 回答
0

我真的建议在带有两个单独的编辑框元素的 GUI 中而不是在控制台中做这样的事情。

如果您仍想在控制台中执行此操作,则需要直接进行控制台缓冲区修改。

每次有新的输出消息到达时,都必须备份当前的输入消息,这样您就可以节省地写入控制台,然后进行一些自定义滚动并再次添加输入消息。需要线程同步来防止缓冲区中的输入和输出混合。

我认为您也不会绕过自定义键处理,因为否则您将无法访问部分类型的输入。

于 2013-05-05T15:38:31.420 回答