1

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

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

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

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

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

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

4

2 回答 2

0

我强烈建议您阅读Beej 的网络指南,这是初学者的套接字编程圣经。那里有很多示例,并逐步解释了每个功能,因此如果您花一些时间,您将能够理解所有内容。该指南还包括一个客户端-服务器连接的工作示例,您可以实际查找您遇到的问题。我通过阅读本指南学到了这种东西!我希望它有帮助!=)

于 2013-11-12T13:21:08.037 回答
0

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

于 2013-02-17T15:24:00.030 回答