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

时间:2013-02-17 12:03:08

标签: c++ c sockets pthreads

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

例如,我想从cli A到cli N:

进行通信
Cli A <---> SerThread A <------> Main Thread <------> SerThread N <---> Cli N

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

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我强烈建议您阅读Beej's Guide to Network,这是begginers的套接字编程的圣经。你有很多例子,并逐步解释每个功能,所以如果你需要一些时间,你将能够理解一切。该指南还包括客户端 - 服务器连接的工作示例,您可以实际查看您遇到的问题。 我通过阅读本指南学到了这些东西!我希望它有所帮助! =)