您的位置:KC网络电话 >> 媒体报道>> 即时通信系统的主要技术

即时通信系统的主要技术

来源:网上转载-即时通信系统  发布时间:2014-08-26 14:33:48

即时通信系统多线程技术线程由线程的内核对象和线程堆栈两部分组成pJ。操作系统通过内核对象对线程实施管理,其中存放了系统关于线程的统计信息。线程堆栈用于维护线程在执行代码时需要的所有函数参数和局部变量。线程只有一个内核对象和一个堆栈,保留的记录很少,也只需很少的内存,因此创建线程的开销远比创建进程少训。在实际编程过程中应根据实际情况设法通过增加线程来解决编程问题,而要尽量避免创建新的进程。线程分为两种:用户接121线程和辅助线程。用户接口线程常用于接收用户的输入,处理相应的事件和消息。辅助线程编程较为简单,一个基本函数代表一个线程,仓0建并启动线程后,则线程进入运行状态。进程的主线程在任何时候都可以创建新的线程,当线程执行完成任务后,自动中止线程:当进程结束后,所有的线程都中止。所有活动的线程共享进程的资源。

客户厂服务器程序设计范式客户/服务器程序设计范式是在设计C/S网络通信控制或者数据交互的应用中总结出来的~些具有代表性的、可以给其它程序设计提供范例的程序设计框架,在实际应用中具有指导和规范作用lbJ。该类程序的客户程序的编写通常比服务器程序容易些,因为客户中进程或者线程的控制要少得多。因此,设计范式主要也是针对服务器程序的设计,主要分为迭代服务器和并发服务器两大类。

 

即时通信系统迭代服务器

迭代服务器(Iterative Server)的工作模式是在一个循环中依次完成每个客户的请求完成后再执行一个循环的工作过程。该模式总是在处理完某个客户的请求之后才转向下一个客户,在执行某任务期间不会侦听和处理其它任何任务。其依次执行接受连接、处理请求、关闭连接、等待下一个连接四个循环步骤。这样的服务器程序比较少见,其中没有进行任何的进程或线程控制。

 

即时通信系统并发服务器,每个客户一个进程

该并发服务器(Concurrent Server)直接派生予进程来处理每个客户,服务器通过多个子进程同时为多个客户服务⋯。客户数目的唯一限制是操作系统对于以其名义运行服务器的用户ID能够同时拥有多少子进程的限制。其缺点是该并发服务器需要耗费大量CPU时闯为每个客户现场派生一个子进程。随着网络应用的爆发式增长,这种模式的服务器显得无法适应现代的需要。该模式的增强模式就是采取预先派生子进程技术,在启动阶段就派生一定数量的子进程,当每个客户连接到达时,这些子进程立即就能提供服务。这种技术的优点在于无须引入父进程执行派生进程的开销就能处理新到的客户,缺点是父进程必须在服务器启动阶段猜测需要预先派生多少子进程,以避免造成子进程数量过多造成计算机资源浪费或者数量不够导致后续连接的客户端无法正常工作。

 

即时通信系统并发服务器,每个客户一个线程

该类服务器为每个客户创建一个线程,以减少为每个客户派生子进程的资源消耗,因为一个线程占用的资源远比一个子进程占用的资源要少得多ll引。程序设计中也可以在服务器启动阶段预先创建一个线程池以取代为每个客户现场创建一个线程的做法以提高性能加速。在等待客户端连接时则可以每个线程各l!laccept,其中采用互斥锁保护,也可以由主线程统一accept。本程序的设计是采取由主线程统一accept并创建工作线程的。在并发服务器中选择进程还是线程来设计需要根据实际的情况决定。进程是一种代价昂贵的东西,它们在启动、清除、被操作系统追踪记录等方面都需要消耗大量的CPU时间。进程和线程之间的代价几乎相差2~3个数量级一l。系统同时存在500个线程犹有可能,但同时存在500个进程绝无可能。每秒钟产生和摧毁许多个线程是可能的,每秒钟产生和摧毁许多个进程则是不可能的。但是进程的安全性和稳定性更强,子进程崩溃并不影响主进程的正常运行,而进程中的一个线程出现问题则就会导致该进程的垮掉。

 

即时通信系统程序设计主要原理

本系统的程序设计主要在客户端与服务器两方面。在C/S通信模式下,客户端只需要连接服务端对服务端进行请求数据。在P2P通信模式下,客户端之间通信是点对点的通信,即客户端不通过服务器,直接与另外一个客户端节点直接进行通信。

在设计C/S通信模型的程序时客户端需要创建一个线程对服务端进行连接,并接受或发送数据,服务端负责监听并接受每个客户端连接请求,并为每个客户端的请求处理创建一个线程,如下图所示

 

即时通信系统

 

即时通信系统设计P2P通信模型的程序时,只需要在客户端进行程序设计。客户端与客户端是对等通信的,即客户端能够向另一个客户端连接请求,又能接受其他客户端的连接请求并作出相应处理。为了完成这项功能,在客户端的设计上,采用两个线程,使他们分别完成作为客户端与服务器所应完成的任务。此外进行P2P通信,客户端A首先向服务器进行会话请求,获取服务端B的地址,并通过服务器将自己的地址发给客户端B,为通信做准备,如图所示

 

即时通信系统

 

上一条:SIP协议的发展和国内外研究现状
下一条:分析手机魔音功能