2016-01-24 58 views
-1

我需要为本地网络制作基于TCP的分散式聊天应用程序。通过分散我的意思是没有中央服务器。网络上的每个实体都应具有服务器/客户端体系结构。当应用程序启动时,它应该检查哪个用户在线(已经运行该应用程序)。我的问题是我如何检查?我可以通过尝试从socket库中通过connect()函数进行连接吗?我是编程新手,尤其是套接字编程,所以如果提前抱歉是一个愚蠢的问题。C基于TCP的分散式聊天应用程序

回答

0

如果您想要保持分散,您可能需要尝试multicastingbroadcasting向网络上的所有主机发送请求数据包,以发现您的聊天应用程序的其他实例。

Pidgin中实现了类似的东西,名称为Bonjour。它工作得非常好,并提供本地网络上的聊天功能。更具体地说,它被定义为的XMPP

如果您正在查找代码示例,请查看我使用多播发现本地网络上提供特定服务的主机的其中一个项目:Headersimplementation

1

你绝对应该研究其他分散式应用程序如何执行此操作。有很多技术。

应用程序的每个实例都应该作为其服务器功能的一部分来跟踪应用程序的其他实例的地址。作为客户端功能的一部分,每个实例都应跟踪它可以连接的几个实例。优先考虑已经存在了很长时间的实例。

该软件应该包括一个长期运行并且预计通常可用的服务器列表。你可能希望包含一个DNS这样的回退方法,任何人都愿意保留一个知名服务器列表,通过知名端口提供访问权限。回退方法也可以是IRC或HTTP。