C语言中基于TCP的分散聊天应用程序

时间:2016-01-24 22:11:48

标签: sockets tcp server client chat

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

2 个答案:

答案 0 :(得分:1)

你一定要研究其他分散的应用程序是如何做到这一点的。有很多技巧。

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

该软件应包括已经运行很长时间并且通常可用的服务器列表。您可能希望包含一种后备方法,例如DNS,由任何愿意保留通过知名端口提供访问的知名服务器列表的人维护。回退方法也可以是IRC或HTTP。

答案 1 :(得分:0)

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

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

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