行侦听是否有客户端连接或者断开连接(包括判断没有响应的连接超时)。
2.服务器端应当是一个信息发送中心,所有客户端的信息都传到服务器端,由服务器端根据要求分发信息。
以上就是服务器端最主要的两个任务。不难看出,服务器端的任务并不复杂。
客户端应该完成的工作包括:
1.与服务器端建立通信通道,向服务器端发送信息。
2.接收来自服务器的信息。
相对服务器而言,客户端的任务更加简单,有了以上的简单分析,可以知道,解决上述四个
问题,即完成了该聊天系统的核心。
2.3 采用的关键技术
系统采用的关键技术有:
2.3.1 Socket网络通信技术
Java具有强大地
网络编程功能,它提供了基于Socket的通信方式(Socket-base-communication),使得应用程序可以像读文件一样从Socket读取数据和写入数据,java提供了流Socket和数据包Socket。两者分别基于传输控制协议和用户数据报协议。
所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。它的基本结构是:建立套接字,绑定地址和端口,建立套接口和队列,接受连接,处理连接,关闭套接字。对应用程序,它的基本结构是:建立套接字,连接服务器,处理连接,关闭套接字。
Socket在应用程序中创建,通过一种绑定机制和驱动程序建立连接,告诉自己对应的ip和port。此后,应用程序送给socket数据,有socket交给驱动程序向网络上发送出去,
计算机从网络上收到与该socket绑定的IP+PORT相关的数据后,由驱动程序交给Socket,应用程序片可以从中提取数据。
数据发送过程:
数据接收过程:
2.3.2 UDP协议
UDP 是User Datagram Protocol的简称, 中文名是用户数据包协议,是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。它是IETF RFC 768是UDP的正式规范。虽然UDP协议不可靠,但是也不会轻易导致传输失效。UDP连接框架如图:
UDP协议传输效率较高,与他相比,TCP协议传输效率较低,TCP是面向连接的传输控制协议,而UDP提供了无连接的数据报服务;TCP具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用
程序需要负责传输可靠性方面的所有工作;也正因为以上特征,UDP具有较好的实时性,工作效率较TCP协议高;UDP段结构比TCP的段结构简单,因此网络开销也小。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
2.3.3 并发服务器技术
并发服务器原理及技术支持并发服务器是指在服务器具有良好的安全性和稳定性的前提下,接收客户端的请求后,立即用一个新的线程来实现服务器与该客户进行交互,主程序再返回继续对端口进行监听,等待下一个客户的连接并与之交互,且可不断如此反复。当前,支持并发多任务处理的有C++、
Delphi、Java等语言开发工具。Java语言和
Java虚拟机提供了完全意义上的多线程机制,其内置语言级的多线程机制可以方便地实现多个并行程序的开发,同时为并发服务器的整体设计提供技术支持。2基于流技术和Socket的网络
通信机制2.1 Socket通信原理流式Socket通信是一种基于连接的通信,即在通信开始之前双方确认身份并建立一条专用的虚拟连接通道,然后通过通道以流式的形式传输信息进行通信,通信结束时拆除原先建立起的连接。在Ja