Sockets 局域网聊天设计

Sockets 局域网聊天设计,sockets,lan,Sockets,Lan,我正在尝试编写一个聊天应用程序,我有一些问题 我正在努力解决这个问题。该应用程序基本上是一个在局域网上工作的聊天应用程序。一个客户端充当 主机和其他客户端可以连接到主机并在它们之间公开聊天。我还想要一个客户端启动的选项 与已连接的客户端的私人聊天。那么,实现这一点的最佳方式是什么呢。例如,请求消息(其中 包含通过主机的客户端(ip)路由的ip地址,如果请求的客户端希望连接,则它们会启动连接 使用请求客户端的ip地址。这也应该在单独的端口号上。应用程序使用多个端口是否重要 或者,当客户端连接到主机

我正在尝试编写一个聊天应用程序,我有一些问题 我正在努力解决这个问题。该应用程序基本上是一个在局域网上工作的聊天应用程序。一个客户端充当 主机和其他客户端可以连接到主机并在它们之间公开聊天。我还想要一个客户端启动的选项 与已连接的客户端的私人聊天。那么,实现这一点的最佳方式是什么呢。例如,请求消息(其中 包含通过主机的客户端(ip)路由的ip地址,如果请求的客户端希望连接,则它们会启动连接 使用请求客户端的ip地址。这也应该在单独的端口号上。应用程序使用多个端口是否重要

或者,当客户端连接到主机时,主机应向其发送具有这些ip地址的用户列表,然后客户端可以 尝试与其他客户端连接以进行私人聊天

希望这一切都有意义。任何帮助都将不胜感激


谢谢

我很乐意创建自己的公司,但有时我会根据时间限制寻找替代方案,就像我以前在一家公司使用过一样。真的很好。但是,如果你决定自己做一个,那么在你考虑代码之前,你必须首先规划出一个逻辑、结构、数据库等等。

如果你只是对一个只需要在局域网上工作的快速而肮脏的聊天工具感兴趣,我建议让所有客户端在一个已知的端口号上发送和接收广播UDP数据包。那么根本就不需要服务器,因此也不需要发现,事情就简单多了


但是,如果您真的想使用客户机-服务器路由,您应该让您的服务器(也称为主机)机器在一个已知端口上接受TCP连接,然后让它使用select()或poll()多路传输传入的TCP连接,并将来自每个传入TCP套接字的任何数据转发到所有其他套接字。客户端可以通过TCP连接到这个众所周知的端口上的服务器,但是客户端必须有某种方式知道要连接到哪个IP地址。。。通过在服务器的IP地址中输入用户类型,或者通过某种发现机制(可以使用广播UDP数据包来实现这一点)。不过,这样做的工作量要大得多。

是的,谢谢您的回复。我正在努力学习如何为自己做到这一点。我正在沿着tcp的路线前进。我的服务器已经使用UDP进行广播,所以客户端可以连接到信息。这是我发现很难掌握的私人聊天部分。我有不同的想法,比如让每个客户端监听udp数据包进行私人聊天。一个应用程序一次使用多个端口是不好的,还是真的不重要?使用多个端口很好;唯一的潜在问题是,如果有人有防火墙阻止传入的数据包或连接,并且他们需要设置防火墙例外以允许它们,这样你的应用程序才能工作,那么他们必须设置多个例外(每个端口一个例外)杰里米·弗里斯纳:我对在局域网里快速而肮脏的聊天很感兴趣。正如你提到的,没有必要使用任何服务器,你能告诉我这是怎么可能的吗?我指的是一些代表它的示例代码。。