第2节 简单UDP通信
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 查看错误代码(https://www.daowen.com)
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 使用虚拟机进行网络测试