1

假设如果我想开发一个 Windows 聊天应用程序,那么还需要开发一个聊天服务器和客户端。开发聊天服务器应用程序后,我们可以在一台机器上运行该应用程序,而聊天客户端将运行另一台电脑。如果这些电脑不在同一个网络中,假设聊天服务器在美国机器上运行,一个聊天客户端在德国机器上运行,另一个在英国机器上运行。在这种情况下,如何使用互联网进行通信。所有机器都可以访问互联网,因此一个聊天客户端将如何登录聊天服务器以及两个聊天客户端将如何相互通信。我只想了解数据如何通过聊天服务器从一个客户端传输到另一个客户端。请给我一个概念,或者如果有人给我一个基于.net的聊天应用程序的参考会更好,其中聊天服务器和聊天客户端将在那里......谢谢。

4

2 回答 2

3

一般来说?我看不出这与 C# 有什么关系,但客户端-服务器架构如下所示:

Client <-----> Server

对于像您描述两个或多个客户端相互通信的情况,您只是在谈论添加多个客户端:

Client A <----
              |
               ----> Server
              |
Client B <----

如果客户端 A 想向客户端 B 发送消息,则客户端 A 将消息发送到服务器,其中包含某种信息,表明它是针对客户端 B 的。然后服务器检查该消息,确定它是针对客户端 B 的,然后通过与客户端 B 的连接中继该消息。

这是客户端-服务器架构的基本定义。还有更高级的架构将客户端-服务器与点对点混合在一起,例如 Skype。在混合系统中,从客户端到服务器的连接通常只携带控制消息(身份验证等)和有关如何直接联系另一个客户端的信息的请求。这种方法的优点是它不需要A 和 B 之间的所有通信都流经服务器。A 和 B 都连接到服务器,但他们随后询问服务器如何直接相互连接,然后使用该直接连接进行带宽密集型通信。

不过,这都是旁白。在开始开发应用程序之前,您应该阅读独立于任何特定语言或环境的客户端-服务器架构。

于 2011-01-17T18:15:44.030 回答
2
  1. 带有客户端轮询服务的 WCF Web 服务(简单的基本场景 - 易于实现,效率不高)

  2. WCF 双工 Web 服务,服务器在需要时更新客户端(有点复杂)

  3. 基于 TCP 套接字的解决方案,最难实现但允许更好的控制。Matthew McDonald 的书《Pro Silverlight 3》中有一个很好的例子

于 2011-01-17T18:09:56.390 回答