基于Windows API的简单聊天软件的设计与实现

2015-10-21 17:50元宇聪
新课程·下旬 2015年10期
关键词:视窗命令聊天

元宇聪

摘 要:现实生活中大家都用QQ聊天,不管是多么庞大、复杂的聊天软件,只要是在Windows操作系统上运行的程序,都必须调用最基本的Windows API进行通信。探讨如何使用Windows最基本的应用程序接口、使用C++编写一个控制台界面的简单聊天软件,实现自由地发送接收文本,并显示在屏幕上。编写完成之后测试在同一台电脑的两个不同进程之间进行通信。

关键词:聊天软件;C++;服务器

一、聊天软件采用的主要技术

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.发送接收数据的过程

建立连接后,服务器和客户端同时是发送者和接收者,发送者向接收者发送文本,接收者收到内容后在屏幕上顯示文本。

发送过程在主线程,接收过程在接收线程。发送和接收可以同时进行,互不干扰。

编辑 薛直艳

猜你喜欢
视窗命令聊天
视窗
视窗
只听主人的命令
移防命令下达后
视窗
我就是不想跟你聊天了
敞开门聊天
这是人民的命令
创意视窗
聊天不倒王