2.2.2 小试牛刀--模拟实现Windows的UDP程序(6)
(10) 多播消息接收函数。
函数原型:void multicastSend()
功能:用于在指定的多播组地址上接收多播消息。
9. 具体编码
(1) 预处理
程序预处理包括库文件的导入、头文件的加载、广播和常量定义以及广播全局变量和多播全局变量的定义。具体实现代码如下:
- /*加载库文件*/
- #pragma comment(lib, "ws2_32.lib")
- /*加载头文件*/
- #include <winsock2.h>
- #include <ws2tcpip.h>
- #include <stdio.h>
- #include <stdlib.h>
-
- /*定义多播常量*/
- #define MCASTADDR "224.3.5.8"
- #define MCASTPORT 25000
- #define BUFSIZE 1024
- #define MCOUNT 10
-
- /*定义广播常量*/
- #define BCASTPORT 5050
- #define BCOUNT 10
-
- /*定义广播全局变量*/
- SOCKET socketBro;
- SOCKET socketRec;
- struct sockaddr_in addrBro;
- struct sockaddr_in addrRec;
- BOOL broadSendFlag;
- BOOL broadFlag;
-
- DWORD bCount;
- DWORD bcastAddr;
- short bPort;
-
- /*定义多播全局变量*/
- SOCKET socketMul;
- SOCKET sockJoin;
- struct sockaddr_in addrLocal;
- struct sockaddr_in addrMul;
-
- BOOL multiSendFlag;
- BOOL bLoopBack;
- BOOL multiFlag;
-
- DWORD dwInterface;
- DWORD dwMulticastGroup;
- DWORD mCount;
- short mPort;
-
- /*自定义函数*/
- void initial();
- void GetArgments(int argc, char **argv);
-
- void userHelpAll();
- void userHelpBro();
- void userHelpMul();
-
- void broadcastSend();
- void broadcastRec();
-
- void mulControl();
- void multicastSend();
- void multicastRec();