示例输出:
Server side
You:Hello!
client:hi, how are you?
You: fine thanks.
client: blabla
..客户端看起来如下:
server: Hello!
you:hi,how are you?
等等。
我的问题是,客户端/服务器有没有办法在其他回复之前发送多条消息?
我目前有一个无休止的while循环,等待接收,然后继续发送,这将重复,直到连接丢失。使用这种方法,我只能在被迫等待接收之前发送一条消息。我不确定正确的实现,因为我对套接字和C都是新手!谢谢:))
答案 0 :(得分:0)
通用解决方案:您必须使用线程,我建议在单独的线程中运行接收部分。
因此,您首先将主线程编码为仅管理发送,就像应用程序根本无法接收一样。显然你在某个地方有一个编辑字段(以某种方式有一个messgae循环)。每次用户按Enter键时,您都可以在编辑字段的回调函数中发送。
然后你编写一个单独的线程,它调用(并挂起,阻塞)Receive()。每次接收“滑动”(即数据进入)时,您对数据执行某些操作,然后跳回到接收入口点。这种情况一直持续到您终止套接字,或者通过其他方式决定实际上不会跳回到接收入口点。
两个线程互相“触摸”的唯一情况是他们都想将文本内容写入同一个聊天窗口。当传输发生时,两者都应立即执行,但可能两者都可能尝试在完全相同的时刻访问聊天窗口,从而导致崩溃。因此,你在这里应用锁定机制;首先尝试访问聊天窗口的人“获取它”,而锁定机制保持另一个保持直到第一个释放锁定。然后第二个可以做它的工作。锁定毕竟只有几微秒。
这些是即时行动,彼此免费。您不需要对多条消息进行排队;每一个都“按照它发生”进行处理。