首页 理论教育简单UDP通信教程,VC++MFC视频教程网络编程

简单UDP通信教程,VC++MFC视频教程网络编程

【摘要】:Socket的中文称为“套接字”,是专门用于开发通信程序的句柄。在软件通信过程中,Socket管理端口的创建、侦听、连接和数据收发等功能。创建一个工程名为“u”的对话框程序,用于演示创建UDP端口并进行简单的数据通信。表15-3 主对话框的控件属性3)新建一个CSocket派生类CSocku,用于截获接收到的网络通信数据,如图15-5所示。16)再次修改CSocku类中的OnReceive函数,将收到的数据和对方IP添加到历史编辑框内。

Socket的中文称为“套接字”,是专门用于开发通信程序的句柄。在软件通信过程中,Socket管理端口的创建、侦听、连接和数据收发等功能。

创建一个工程名为“u”的对话框程序,用于演示创建UDP端口并进行简单的数据通信

1)在主对话框中增加一些控件,如图15-4所示。

978-7-111-46378-8-Chapter15-6.jpg

图15-4编辑主对话框资源

2)修改控件属性,见表15-3。

表15-3 主对话框的控件属性

978-7-111-46378-8-Chapter15-7.jpg

3)新建一个CSocket派生类CSocku,用于截获接收到的网络通信数据,如图15-5所示。

978-7-111-46378-8-Chapter15-8.jpg

图15-5 添加新类

4)在新建的CSocku类的头文件中包含基类头文件。

978-7-111-46378-8-Chapter15-9.jpg

5)在CSocku类中添加虚函数OnReceive,用于截获接收到的网络数据,如图15-6所示。

978-7-111-46378-8-Chapter15-10.jpg

图15-6 添加虚函数

6)修改虚函数代码。

978-7-111-46378-8-Chapter15-11.jpg

7)在主对话框类的头文件中,添加一个CSocku类型的成员变量

978-7-111-46378-8-Chapter15-12.jpg

8)修改主对话框初始化函数代码。

978-7-111-46378-8-Chapter15-13.jpg

9)编译并运行,测试代码,启动后弹出Socket错误号码是10093。

10)在主菜单中,执行Tools->Error Lookup命令,如图15-7所示。

978-7-111-46378-8-Chapter15-14.jpg

图15-7 查看错误代码(www.chuimin.cn)

11)在错误查找对话框中,可以看到错误原因是未执行Socket初始化,如图15-8所示。

978-7-111-46378-8-Chapter15-15.jpg

图15-8 错误代码说明

12)在App类的进程启动函数InitInstance开头,添加一行代码初始化Socket。

978-7-111-46378-8-Chapter15-16.jpg

13)在主对话框类中,添加“发送(&S)”按钮的消息映射函数OnOK。

978-7-111-46378-8-Chapter15-17.jpg

978-7-111-46378-8-Chapter15-18.jpg

14)编译并运行,测试代码,如图15-9所示。

输入本机IP地址以及8828的端口号后,在输入编辑框内输入一些文字再按<Enter>键。发送数据的目标是本机,因此,在本机接收到了单击“发送”按钮时发出的数据。

978-7-111-46378-8-Chapter15-19.jpg

图15-9 查看运行结果

15)继续修改主对话框类的OnOK函数,在函数末尾追加以下代码。

978-7-111-46378-8-Chapter15-20.jpg

16)再次修改CSocku类中的OnReceive函数,将收到的数据和对方IP添加到历史编辑框内。

978-7-111-46378-8-Chapter15-21.jpg

978-7-111-46378-8-Chapter15-22.jpg

17)编译并运行,测试代码,如图15-10所示。

将生成的可执行文件在多台计算机中运行,分别输入不同的IP地址进行数据发送测试。

978-7-111-46378-8-Chapter15-23.jpg

图15-10 查看运行结果

18)如果只有一台计算机,也可以使用VMware软件安装一台虚拟机,如图15-11所示。

978-7-111-46378-8-Chapter15-24.jpg

图15-11 使用虚拟机进行网络测试