一种方法是在用户第一次开始键入一行文本时设置标志 - 然后如果在设置该标志时从网络接收数据,只需将接收到的数据排队在某些本地数据结构中(即不打印它,直到本地用户按下返回.当本地用户按下return时,您将打印出他在键入时排队的所有数据,并取消设置该标志.
当然,这种方法有几个缺点:
另一种方法是将本地用户的文本和远程用户的文本保持在物理上独立的区域(例如,窗口的上半部分和下半部分,就像许多聊天程序一样).要做到这一点,需要比vanilla C/C++ stdin/stdout/cin/cout API给你更多的控制; 您需要创建一个GUI窗口(使用Win32或Qt或其他GUI API)和两个单独的文本窗口小部件,或者如果您想将所有内容保存在MS-DOS窗口中,您可能会使用PDCurses之类的东西来实现那.
但是,这些选项中的任何一个都是非平凡的 - 它们可能比其他聊天应用程序花费更多的时间和精力来实现.如果是我,并且聊天应用程序只是一个学习练习,我会被简单地将当前行为记录为"已知限制"而不用担心修复它.
| 归档时间: |
|
| 查看次数: |
363 次 |
| 最近记录: |