我正在尝试在c#中构建一个可以在wan网络中运行的聊天应用程序。 应用程序中有2个方面。服务器端和客户端。 在我看来,我认为从客户端到客户端的每条消息都需要传递给服务器,服务器会将它转发给正确的客户端。客户之间的沟通不会直接。 这是正确的型号吗? 如果是,服务器是否需要一个可以监听所有客户端的套接字? (因为每个客户端都将其消息发送到服务器上的同一端口)。 服务器是否可以处理同一端口上数百万条消息的管理?
答案 0 :(得分:0)
答案 1 :(得分:0)
我认为这取决于你想要完成的事情,每个选择都有自己的优点和缺点 例如:
使用集中式服务器可以跟踪用户在线等消息...但您必须管理每个连接的端口(有关详细信息,请参阅答案末尾的说明)。
使用P2P模型,您将无法获得集中式服务器所需的瓶颈和管理,但再次管理非集中式系统可能更麻烦(取决于您想要实现的目标)。
如果您要进行集中式设计,通常情况下,您将拥有一个可以监听请求的端口的服务器
一旦用户想要连接,服务器将为客户端启动一个新线程,并为他分配一个端口(该线程通常来自线程池和来自特定端口范围的端口)。
这将允许用户以非阻塞方式与服务器通话,并允许多个用户同时使用该服务。