2.2.2 小试牛刀--模拟实现Windows的UDP程序(5)
(4) 多播全局变量。
SOCKET socketMul:UDP多播套接字。
SOCKET sockJoin:加入多播组套接字。
struct sockaddr_in addrLocal:本地地址结构,其IP地址部分默认为0,即INADDR_ANY,通过另一个全局变量dwInterface获得。
struct sockaddr_in addrMul:多播组地址,默认为MCASTADDR。
BOOL multiSendFlag:多播信息身份标志,如果为默认值FALSE,表示是消息接收者,否则是发送者。
BOOL bLoopBack:消息返回禁止标志,如果为TRUE,表示禁止返还。
BOOL multiFlag:多播标志,如果为TRUE,表示该程序进行广播操作。
DWORD dwInterface:表示多播地址参数的双字节变量,初始赋值是INADDR_ ANY,表示0,用于接收用户提供的参数。
DWORD dwMulticastGroup:双字节,表示消息数量的变量,该变量的初始赋值为MCASTADDR,用于接收用户提供的参数。
DWORD mCount:双字节,表示消息数量的变量,该变量的初始赋值为MCOUNT。
Short mPort:多播的端口号,默认是MCASTPORT。
8. 规划函数
(1) 初始化全局变量。
函数原型:int initial()
功能:用于初始化全局变量,包括初始化广播全局变量和多播全局变量。
(2) 接收用户提供的参数。
函数原型:void GetArgments(int argc, char **argv)
功能:用于获取用户提供的参数,分为如下三种情况。
如果参数个数小于两个:执行用户帮助。
获取广播选项:广播标志设置为真,通过case,分别实现如果是发送者、广播的地址、广播的端口号、广播(接收或者发送)的数量、其他情况,进行对应的操作。
获取多播选项:通过case,分别实现如果是发送者、多播的地址、多播的端口号、本地接口地址、返回标志设置为真、发送(接收)的数量和其他情况,进行对应的操作。
(3) 全局用户帮助函数。
函数原型:void userHelpAll()
功能:用于显示全局用户帮助函数。
(4) 多播用户帮助函数。
函数原型:void userHelpMul()
功能:用于显示多播用户帮助信息。
(5) 广播用户帮助函数。
函数原型:void userHelpBro()
功能:用于显示广播用户帮助信息。
(6) 广播消息发送函数。
函数原型:void broadcastSend()
功能:用于在指定的广播地址上发送广播信息。
(7) 广播消息接收函数。
函数原型:void broadcastRec()
功能:用于在指定的广播地址上接收广播信息。
(8) 多播控制函数。
函数原型:void mulControl()
功能:服务于多播信息发送和接收函数,用于创建多播套接字、设置多播地址和本地地址、套接字绑定、设置套接字选项、加入指定多播组。
(9) 多播消息发送函数。
函数原型:void multicastSend()
功能:用于在指定的多播组地址上发送多播消息。