互联网网络通信的基础是TCP/IP,即传输控制协议和网络互联协议。按照TCP/IP规定,32位IP地址用4个字节来表示,例如,“192.168.1.100”。图15-1 通过命令查看本机网络配置在“本地连接”的属性设置对话框中,双击“Internet协议”,如图15-2所示。图15-2 查看网络邻居属性图15-3 TCP/IP属性设置在TCP/IP中计算机软件通信必须依赖于通信端口,端口号的范围是0~65535。......
2023-11-25
Socket的中文称为“套接字”,是专门用于开发通信程序的句柄。在软件通信过程中,Socket管理端口的创建、侦听、连接和数据收发等功能。
创建一个工程名为“u”的对话框程序,用于演示创建UDP端口并进行简单的数据通信。
1)在主对话框中增加一些控件,如图15-4所示。
图15-4编辑主对话框资源
2)修改控件属性,见表15-3。
表15-3 主对话框的控件属性
3)新建一个CSocket派生类CSocku,用于截获接收到的网络通信数据,如图15-5所示。
图15-5 添加新类
4)在新建的CSocku类的头文件中包含基类头文件。
5)在CSocku类中添加虚函数OnReceive,用于截获接收到的网络数据,如图15-6所示。
图15-6 添加虚函数
6)修改虚函数代码。
7)在主对话框类的头文件中,添加一个CSocku类型的成员变量。
8)修改主对话框初始化函数代码。
9)编译并运行,测试代码,启动后弹出Socket错误号码是10093。
10)在主菜单中,执行Tools->Error Lookup命令,如图15-7所示。
图15-7 查看错误代码(www.chuimin.cn)
11)在错误查找对话框中,可以看到错误原因是未执行Socket初始化,如图15-8所示。
图15-8 错误代码说明
12)在App类的进程启动函数InitInstance开头,添加一行代码初始化Socket。
13)在主对话框类中,添加“发送(&S)”按钮的消息映射函数OnOK。
14)编译并运行,测试代码,如图15-9所示。
输入本机IP地址以及8828的端口号后,在输入编辑框内输入一些文字再按<Enter>键。发送数据的目标是本机,因此,在本机接收到了单击“发送”按钮时发出的数据。
图15-9 查看运行结果
15)继续修改主对话框类的OnOK函数,在函数末尾追加以下代码。
16)再次修改CSocku类中的OnReceive函数,将收到的数据和对方IP添加到历史编辑框内。
17)编译并运行,测试代码,如图15-10所示。
将生成的可执行文件在多台计算机中运行,分别输入不同的IP地址进行数据发送测试。
图15-10 查看运行结果
18)如果只有一台计算机,也可以使用VMware软件安装一台虚拟机,如图15-11所示。
图15-11 使用虚拟机进行网络测试
有关VC++就业培训宝典之MFC视频教程的文章
互联网网络通信的基础是TCP/IP,即传输控制协议和网络互联协议。按照TCP/IP规定,32位IP地址用4个字节来表示,例如,“192.168.1.100”。图15-1 通过命令查看本机网络配置在“本地连接”的属性设置对话框中,双击“Internet协议”,如图15-2所示。图15-2 查看网络邻居属性图15-3 TCP/IP属性设置在TCP/IP中计算机软件通信必须依赖于通信端口,端口号的范围是0~65535。......
2023-11-25
TCP的通信过程比UDP复杂得多,必须依据C/S架构基础进行开发,一般TCP通信软件都分为服务器端和客户端两部分。图15-12 TCP服务器的侦听和应答结构创建工程名为“Server”和“Client”的两个对话框程序,用于演示通过CSocket类实现简单的TCP数据通信。图15-14 程序向导自动添加的代码3)在Server工程中创建一个CSocket类的派生类CListenSocket,如图15-15所示。6)在CListenSocket类中添加虚函数OnAccept,用于截获客户端的连接。8)在CClientSocket类中添加虚函数OnClose,用于监测某个客户端是否断开了连接。......
2023-11-25
CBrush类的主要成员见表7-4。表7-4 CBrush类的主要成员1)用于填充的阴影线风格主要包括以下几种。创建一个工程名为“Brush”的对话框程序,用于演示选用不同画刷进行绘画的效果。2)在资源视图中,单击鼠标右键,在弹出的快捷菜单中,选择“Import”命令导入位图,如图7-16所示。图7-19 查看运行结果CBrush类构造函数与CreateSolidBrush和CreateHatchBrush等函数的功能基本一样,都可以用于创建一个画刷。一般当使用新画刷绘画结束后,最好恢复选择回旧画刷。......
2023-11-25
标签控件,又称选项卡控件。很多软件的用户资料注册部分是采用注册向导模式,而用户资料修改则采用标签控件管理模式。打开本章第3节建立的“usd”工程,本节继续演示采用标签控件来管理多个分页。1)新插入一个对话框资源,作为使用标签控件进行分页管理的父窗口,如图9-20所示。6)添加标签控件的TCN_SELCHANGE消息反射函数OnSelchangeTab,如图9-22所示。图9-24 查看运行结果单击“修改”按钮或者双击列表选项,就会打开带标签控件的修改资料的对话框。......
2023-11-25
在本章第5节中,通过“Win32 Application”建立的MFC32工程,目的是为了演示MFC工程的架构原理。一个MFC工程必须包含一个CWinApp的派生类,并定义一个派生类的全局变量theApp,最后重写InitInstance虚函数用于处理进程启动过程。本节直接通过“MFC AppWizard”来创建MFC工程,用于对照以上说明的MFC必备因素。图3-54 程序向导生成的代码图3-55 MFC类向导在Class name下拉列表中选择CTestMFCDlg类,在Member functions列表框中显示4个已添加的回调函数。......
2023-11-25
将一个窗口句柄嫁接到一个CWnd类型变量中。使用MFC应用程序向导,创建一个工程名为“vs”的对话框程序,演示通过函数建立关联变量。4)修改对话框初始化函数,通过调用函数建立控件窗口和变量的关联。6)为增、删、改3个按钮建立消息映射函数并修改代码。实际上类向导建立的关联变量,内部也是调用子类化函数实现的,但是使用向导建立关联变量更加方便一些。因此,在后续章节中,主要使用类向导建立关联变量。......
2023-11-25
本节演示在MFC中,开发弹出对话框的过程和弹出对话框消息处理的过程。MFC的消息处理不是使用一个全局的回调函数,而是创建一个与窗口关联的派生类,用于消息关联的成员函数来接收和处理窗口的消息。在类向导中选择对应的消息,添加与该消息关联的成员函数来处理该消息,这就是MFC的消息映射机制。MFC的消息映射机制,一般不需要开发者解析这些复杂的数据,因为消息映射函......
2023-11-25
创建一个工程名为“Mdc”的对话框程序,演示CMemDC类的封装及调用过程。2)选中“C/C++Header File”项,输入“MemDC”后单击“OK”按钮,如图8-2所示。图8-3 编辑主对话框资源5)在主对话框类的头文件中,修改代码,增加两个CMemDC类对象。图8-4 添加WM_SIZE消息映射函数7)修改消息映射函数代码,当窗口大小变化时在内存DC中缩放背景图。图8-5 查看运行结果本示例重点演示了CMemDC类的封装过程,以及加载文件位图和创建内存DC的方法。......
2023-11-25
相关推荐