客户端到客户端套接字通信

client to client socket communication

本文关键字:客户端 通信 套接字      更新时间:2023-10-16

我有一个客户端/服务器程序,它允许通过服务器派生的线程为多个客户端提供服务。目前,该程序只与服务器通信,但我现在想重新设计该程序,以便客户端可以与另一个客户端建立通信。在设计方面,我没有太多的经验,不知道正确的方向是什么。最初我考虑通过服务器线程进行通信,但我不知道如何通知该线程的客户端另一个客户端想要建立通信。

例如,我想从cli A到cli N:进行通信

Cli A <---> SerThread A <------> Main Thread <------> SerThread N <---> Cli N

我不确定如何通知Cli N Cli A需要与之沟通。

在客户端从套接字中读取之前,它不会知道另一个客户端想要与它通信。因此,如果Cli N处于等待用户输入直到发送/接收的状态,它就不会知道。我需要一种方法来立即通知客户通信正在等待它。

我想得越多,就越困惑,所以在我正确设计这个之前,我可能需要一些指导。

好吧,你可以让它像开关一样工作:)我想你想通过服务器在两个客户端之间建立连接,对吗?如果是这样,您需要做的是给每个客户端一个序列号。然后从客户端向服务器发送一个"请求",其中包含您正在搜索的客户端的信息。意思是带有序列号的数据包。然后,服务器可以将信息brodcast到已连接客户端的列表中。在客户端,由于服务器,客户端将收到序列号。如果客户端接收到的序列号与其自己的序列号匹配,则客户端将向服务器返回true。否则,它将发出虚假信息。然后,下次搜索该客户端时,服务器将已经知道它在哪里,并将仅向该特定客户端发送消息。如果客户端明显断开连接,序列号将被删除,服务器将丢失有关该客户端的数据。

我强烈建议您阅读Beej的网络指南,这是面向begineers的套接字编程圣经。你有很多例子,并一步一步地解释每一个函数,所以如果你花一些时间,你将能够理解一切。该指南还包括一个客户端-服务器连接的工作示例,您可以实际查找您遇到的问题。我通过阅读这本指南学到了这类东西!我希望它有帮助