C#网络聊天程序三大模式浅析

开发 后端
C#网络聊天程序三大模式都是什么呢?他们各自都有什么特点呢?那么本文就向你介绍具体的内容。

C#网络聊天程序三大模式都是什么呢?让我们开始吧:

实现一个网络聊天程序本应是***一篇文章的内容,也是本系列***的一个程序,来作为一个终结。但是我想后面更多的是编码,讲述的内容应该不会太多,所以还是把讲述的东西都放到这里吧。

C#网络聊天程序三大模式之一

网络聊天实现模式1 

当采用这种模式时,即是所谓的完全点对点模式,此时每台计算机本身也是服务器,因为它需要进行端口的侦听。实现这个模式的难点是:各个主机(或终端)之间如何知道其它主机的存在?此时通常的做法是当某一主机上线时,使用UDP协议进行一个广播(Broadcast),通过这种方式来“告知”其它主机自己已经在线并说明位置,收到广播的主机发回一个应答,此时主机便知道其他主机的存在。这种方式我个人并不喜欢,但在 C#编写简单的聊天程序 这篇文章中,我使用了这种模式,可惜的是我没有实现广播,所以还很不完善。

网络聊天实现模式2 

C#网络聊天程序三大模式之二

第二种方式较好的解决了上面的问题,它引入了服务器,由这个服务器来专门进行广播。服务器持续保持对端口的侦听状态,每当有主机上线时,首先连接至服务器,服务器收到连接后,将该主机的位置(地址和端口号)发往其他在线主机(绿色箭头标识)。这样其他主机便知道该主机已上线,并知道其所在位置,从而可以进行连接和对话。在服务器进行了广播之后,因为各个主机已经知道了其他主机的位置,因此主机之间的对话就不再通过服务器(黑色箭头表示),而是直接进行连接。因此,使用这种模式时,各个主机依然需要保持对端口的侦听。在某台主机离线时,与登录时的模式类似,服务器会收到通知,然后转告给其他的主机。

网络聊天实现模式3 

C#网络聊天程序三大模式之三

第三种模式是我觉得最简单也最实用的一种,主机的登录与离线与第二种模式相同。注意到每台主机在上线时首先就与服务器建立了连接,那么从主机A发往主机B发送消息,就可以通过这样一条路径,主机A --> 服务器 --> 主机B,通过这种方式,各个主机不需要在对端口进行侦听,而只需要服务器进行侦听就可以了,大大地简化了开发。

而对于一些较大的文件,比如说图片或者文件,如果想由主机A发往主机B,如果通过服务器进行传输效率会比较低,此时可以临时搭建一个主机A至主机B之间的连接,用于传输大文件。当文件传输结束之后再关闭连接(桔红色箭头标识)。

除此以外,由于消息都经过服务器,所以服务器还可以缓存主机间的对话,即是说当主机A发往主机B时,如果主机B已经离线,则服务器可以对消息进行缓存,当主机B下次连接到服务器时,服务器自动将缓存的消息发给主机B。

C#网络聊天程序三大模式的基本情况就向你介绍到这里,希望对你了解和学习C#网络聊天程序有所帮助。

【编辑推荐】

  1. C#异步调用四大方法详解
  2. C#网络编程消息发送问题浅析
  3. C#异步传输字符串服务端的实现
  4. C#异步传输字符串客户端的实现
  5. C#网络编程基本概念TCP浅析
责任编辑:仲衡 来源: 博客园
相关推荐

2009-09-07 04:56:52

C#模式窗体

2009-08-20 17:30:56

C#异步编程模式

2009-09-01 09:37:15

C#写文件

2009-08-28 16:03:15

C#程序实现鼠标移动

2009-08-14 11:00:16

C#创建Windows

2009-09-07 09:53:01

C# DisposeDispose方法

2009-08-21 17:48:43

C#网络编程

2009-08-21 17:53:25

C#网络编程客户端程序

2009-04-29 09:06:18

C#设计模式Adapter

2011-06-03 10:15:13

2009-09-07 14:00:57

C#抓取网页

2009-09-07 14:52:01

C# HTTP Req

2009-08-20 17:47:54

C#异步编程模式

2009-08-21 14:03:04

C#网络编程

2009-08-07 17:25:37

C# SortedLi

2009-08-21 17:33:34

服务器端程序C#网络编程

2009-08-21 17:39:20

服务器端程序C#网络编程

2009-08-17 18:34:50

C# ChangeCo

2009-08-14 17:45:52

C# ArrayLis

2009-09-02 17:28:26

C#程序设计Windows窗体
点赞
收藏

51CTO技术栈公众号