MFC网络编程(三):一般TCP通信

介绍

上一篇所实现的TCP程序没有包括通信协议的内容,因此服务器和客户端只能进行简单的信息交流。当交互的要求比较多的时候(比如说客户端不只是发送文本信息,同时还要求能够对服务器数据进行增、删、改等操作),通常会定义一些通信协议。
通信协议由命令号和附加数据所组成。命令号也叫协议号,就是用一个数字或者字符串通知对方执行一个对应的命令;附加数据包含与某个命令相关的数据。
通信协议的使用使客户端和服务器的交流更有条理性。

实例

创建一个C/S结构的网络版信息管理软件

1. 首先,定义需要的协议编号和数据信息:

将以上代码同时添加到服务器和客户端的App类的头文件中;
2. 分别开发服务器程序和客户端程序:

A.服务器程序

(1)在App头文件中添加一个变量,用于管理数据:

(2)添加两个CSocket类,用于侦听和应答:

在CListenSocket类中:

添加虚函数OnAccept用于获得客户端的连接;

在CCLientSocket类中:

添加虚函数OnClose,用于检查客户端的断开;

添加虚函数OnReceive,用于接收客户端命令并做出相应的反应:

(3)在主对话框中定义CListenSocket的成员变量,并在初始化函数中创建端口并调用侦听函数进行侦听。

B.客户端程序

(1)编辑客户端界面;
(2)在主对话框类中添加CSocket类的成员变量,并在初始化函数中创建端口并调用Connect函数连接服务器;
(3)为“添加”按钮建立消息响应函数,同时在初始化函数中添加OnRefresh函数,用于每次登录后从服务器处获得信息更新显示列表:

运行效果:

这里写图片描述
在另外一台电脑上同时运行一个客户端程序,会看到程序一打开就会载入与此客户端相同的数据;而且当在任意客户端上添加数据时,会看到其他对话框中也添加了此条数据。
原因是:当某个对话框添加数据后,同时会向服务器发送此条消息,服务器作为中转站又向所有在线的客户端发送消息,从而使得各个客户端的数据同步。

来源:图书馆的恶魔

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年9月21日
下一篇 2017年9月21日

相关推荐