基于WindowsAPI的简单聊天软件的设计与实现
2015-08-15元宇聪
元宇聪
(泉州师范学院软件学院)
一、聊天软件采用的主要技术
1.开发平台C++
C++是在C 语言的基础上开发的一种通用编程语言,应用广泛。C++支持多种编程范式,如面向对象编程、泛型编程、面向过程编程、函数式编程等。最新正式标准C++14 于2014 年8 月18 日公布。正式名称为ISO/IEC 14882:2014。其编程领域众广,常用于系统开发、引擎开发等应用领域,是迄今为止最受人们受用的最强大编程语言之一。
标准模板库(Standard Template Library)是惠普实验室开发的一系列软件的统称,是类库和函数的集合。现在是C++的一部分,由C++标准委员会制定,并不断维护更新。
2.视窗操作系统应用程序接口
视窗操作系统应用程序接口(Windows Application Programming Interface)是微软对于视窗操作系统中可用的核心应用程序编程接口的名称。它被设计为各种语言的程序调用,也是应用软件与视窗系统最直接的交互方式。
视窗套接字(Windows Socket)是网络通信的基本构件,是视窗操作系统下得到广泛应用、开放、支持多种协议的网络编程接口。20 世纪90 年代初,微软和第三方厂商共同制订了一套标准,即视窗套接字规范,简称WinSock。一个套接字就是一个通信标识,由一个短整数表示,实际上就是一个句柄,代表网络协议中的一组数据,该数据包含了通信双方的因特网协议地址和当前的连接状态等信息。
视窗套接字使用客户端/服务器模型。一个服务程序通常在一个众所周知的地址监听对服务的请求,此时服务进程一直处于休眠状态,直到一个客户对这个服务的地址提出了连接请求。在这个时刻,服务程序被“惊醒”并且为客户提供服务——对客户的请求做出适当的反应。
二、聊天软件的设计
1.软件主要流程
这是一个控制台程序,用一个循环让用户输入内容,程序对用户输入的内容进行判断,之后继续循环。
程序把“/”开头的字符串都当作命令,然后对命令进行分析,根据不同的命令实现对程序的控制。有些命令包含多个参数,参数写在命令后面,用空格隔开。如果用户输入不存在的命令则提示错误。
程序把非“/”开头的字符串都当作聊天内容,在建立连接之后会把输入内容发送给对方。
(1)服务器侦听。用户输入“/侦听”命令,参数1 为侦听的端口号,执行之后程序开始侦听。侦听时会阻塞主线程的执行然后等待客户端的连接,一旦收到客户端的连接请求,才继续运行并建立连接。
(2)客户端连接。用户输入“/连接”命令,参数1 为服务器的地址,参数2 为服务器侦听的端口号,命令检查无误并执行之后,开始尝试与服务器连接。连接时会阻塞主线程的执行然后等待服务器的回应。当客户端收到服务器的回应时,建立连接。
(3)断开连接。建立连接后,任意一端都可以随时断开连接。其中一端断开连接时,另一端在接收数据时会侦测到并断开连接。
2.发送接收数据的过程
建立连接后,服务器和客户端同时是发送者和接收者,发送者向接收者发送文本,接收者收到内容后在屏幕上显示文本。
发送过程在主线程,接收过程在接收线程。发送和接收可以同时进行,互不干扰。