UDP用于执行计算机各进程间简单、低层的通信。图11-68 UDP子选板使用打开UDP函数,在端口上打开一个UDP套接字。UDP会保留为发送命令而指定的数据报的字节数。然而,鉴于UDP可靠性不如TCP,通常不会通过UDP发送大型数据报。例11-6:UDP通信实例。该例子使用UDP实现双机通信。图11-69和图11-70所示是实现UDP通信发送端的前面板和程序框图。UDP函数通过广播与单个客户端或子网上的所有计算机进行通信。......
2023-11-26
UDP的格式也是由命令号和附带数据两部分组成。但是UDP必须先使用结构体对命令号和数据进行打包后再发送,因为UDP不执行正确性检查。如果不打包则可能出现用户协议或协议数据不能完整到达,或者到达的顺序颠倒等问题。
创建工程名为“f”的对话框程序,用于演示UDP打包以及局域网P2P软件的开发过程。在应用程序向导的第2页,选中“Windows Sockets”复选框。如果没有选择该选项,那么也可以在stdafx.h中包含“afxsock.h”头文件,并在App类的InitInstance函数中调用AfxSocketInit函数。
1)添加一个异步通信派生类CSocku,用于收发UDP网络协议数据,如图15-24所示。
图15-24 添加新类
2)在CFApp类的头文件中,添加一些数据定义和类成员变量。
3)在主对话框中只使用一个列表控件(ID是IDC_LIST),用于显示在线的计算机,如图15-25所示。
图15-25 编辑主对话框资源
4)通过类向导为列表控件建立控件型关联变量,如图15-26所示。
图15-26 添加控件型关联变量
5)修改主对话框初始化函数的代码。
6)在CFApp类中添加一个公有成员函数InitInfo,用于初始化本机信息。
7)在CSocku类中添加一个虚函数OnReceive,用于接收UDP通信数据。
8)在主对话框类中,添加一个公有成员函数InsertHost。
9)编译并运行,测试代码,如图15-27所示。
在多台计算机上运行可执行程序,列表显示的是所有在线用户的信息。
图15-27 查看运行结果
10)在CFApp类中添加虚函数ExitInstance,用于进程退出时群发离线消息。
(www.chuimin.cn)
11)在CSocku::OnReceive函数的switch语句中,添加一个case条件。
12)在主对话框类中,添加一个公有成员函数RemoveHost。
13)编译并运行,测试代码。
在多台计算机上运行启动和关闭进程,查看用户上线和下线时列表是否显示正常。
14)在资源视图中插入一个对话框资源,用于向其他在线用户发送文字消息,如图15-28所示。
图15-28 编辑聊天对话框资源
15)修改对话框ID为IDD_CHAT_DLG,修改外观和字体并插入一些控件,见表15-6。
表15-6 聊天对话框的控件属性
16)创建与IDD_CHAT_DLG关联的CDialog派生类,并添加WM_INITDIALOG消息映射函数。
17)在主对话框类中,添加“发送(&S)”按钮的消息映射函数OnOK。
18)在主对话框类中添加双击列表项(NM_DBLCLK)的消息反射函数。
19)在CSocku::OnReceive函数的switch语句中,添加一个case条件。
20)在主对话框类中,添加一个公有成员函数OnText。
21)编译并运行,测试代码。在多台计算机上相互发送聊天文字进行测试,如图15-29所示。
图15-29 查看运行结果
有关VC++就业培训宝典之MFC视频教程的文章
UDP用于执行计算机各进程间简单、低层的通信。图11-68 UDP子选板使用打开UDP函数,在端口上打开一个UDP套接字。UDP会保留为发送命令而指定的数据报的字节数。然而,鉴于UDP可靠性不如TCP,通常不会通过UDP发送大型数据报。例11-6:UDP通信实例。该例子使用UDP实现双机通信。图11-69和图11-70所示是实现UDP通信发送端的前面板和程序框图。UDP函数通过广播与单个客户端或子网上的所有计算机进行通信。......
2023-11-26
Socket的中文称为“套接字”,是专门用于开发通信程序的句柄。在软件通信过程中,Socket管理端口的创建、侦听、连接和数据收发等功能。创建一个工程名为“u”的对话框程序,用于演示创建UDP端口并进行简单的数据通信。表15-3 主对话框的控件属性3)新建一个CSocket派生类CSocku,用于截获接收到的网络通信数据,如图15-5所示。16)再次修改CSocku类中的OnReceive函数,将收到的数据和对方IP添加到历史编辑框内。......
2023-11-25
UDP是在计算机上规定用户以数据报方式进行通信的协议。UDP与IP的差别在于,IP对于系统管理的网络软件可以使用,一般用户无法直接使用,而UDP是普通用户可以直接使用的,故称为用户数据报协议。UDP必须挂在IP上运行,它的下层协议是以IP作为前提的。最小值是8字节,即UDP数据报报头长度。使用伪报头的目的在于验证UDP数据报是否已到达它的正确报宿。在地址方面,UDP报头本身只是确定了协议端口的编号。......
2023-11-04
局域网是结构复杂程度最低的计算机网络,也是目前应用最广泛的一类网络,具有如下特征:①网络所覆盖的地理范围比较小,通常不超过10km,甚至只在一幢建筑或一个房间内。观察下列局域网的拓扑结构图,请找出构成该网络的主要硬件设备。请仔细阅读本书内相关内容,并上网查找关于局域网特征的资料,然后完成下表。......
2023-10-19
MVC 软件开发架构的优点如下:分工明确:使用MVC 软件开发架构可以把数据库开发、程序界面开发、程序业务逻辑开发有效分离,以安排不同的人员完成不同的任务,分工合作完成总体任务。本章及以后两章将针对MVC 软件开发架构的模型、控制器、视图的相关内容分别作介绍。......
2023-11-25
投资者应当自行承担因此造成的资金损失及相应法律后果,造成网络借贷平台或第三人损失的,还应承担完全的赔偿责任。目前,虽然宏观层面出台了网贷机构监管的“一办法三指引”,但各地方金融监管机构尚没有出台实施细则,网络借贷业务的合法性、合规性在实践中存在许多各方认识不统一的地方,监管政策风险始终存在。......
2023-07-05
通信系统是传递信息所需的一切技术设备的总和。单向数字通信系统的组成如图2-1所示。对于数字通信系统来说,发送设备的编码常常又可分为信道编码与信源编码两部分。信源编码是把连续消息变换为数字信号;而信道编码则是使数字信号与传输介质匹配,提高传输的可靠性或有效性。......
2023-11-22
相关推荐