/*加载库文件*/
#pragma comment( lib, "ws2_32.lib" )
/*加载头文件*/
#include <winsock2.h>we d
#include <ws2tcpip.h>
#include <stdio.h>
iframe
#include <stdlib.h>
/*定义多播常量*/
#define MCASTADDR "224.3.5.8"
#define MCASTPORT 25000
#define BUFSIZE 1024
#define MCOUNT 10
/*定义广播常量*/
love with you#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 urHelpAll();
void urHelpBro();
void urHelpMul();
void broadcastSend();
void broadcastRec();
void mulControl();
void multicastSend();
void multicastRec();
/*初始化全局变量函数*/
void initial()
{
/*初始化广播全局变量*/
bPort = BCASTPORT;
bCount = BCOUNT;
bcastAddr = INADDR_BROADCAST;
broadSendFlag = FALSE;
broadFlag = FALSE;
multiFlag = FALSE;
/*初始化多播全局变量*/
dwInterface = INADDR_ANY;
dwMulticastGroup = inet_addr(MCASTADDR);
mPort = MCASTPORT;
mCount = MCOUNT;
multiSendFlag = FALSE;
bLoopBack = FALSE;
instr
}
/*参数获取函数*/
void GetArgments(int argc, char **argv)
{
int i;
/*如果参数个数小于2个*/
if(argc<=1)
{
urHelpAll();
return ;
}
/*获取广播选项*/
if(argv[1][0]=='-'&&argv[1][1]=='b')
{
/*广播标志设置为真*/
broadFlag = TRUE;
for(i=2; i < argc ;i++)
{
if (argv[i][0] == '-')
{
switch (tolower(argv[i][1]))
prentation {
/*如果是发送者*/
ca 's':
broadSendFlag = TRUE;
break;
/*广播的地址*/
ca 'h':
if (strlen(argv[i]) > 3)
bcastAddr = inet_addr(&argv[i][3]);
break;
/*广播的端口号*/
ca 'p':
if (strlen(argv[i]) > 3)
pontiac
bPort = atoi(&argv[i][3]);deuce
break;
/*广播(接收或者发送)的数量*/
ca 'n':
bCount = atoi(&argv[i][3]);
break;
/*其他情况显示用户帮助,终止程序*/
default:
{
urHelpBro();
ExitProcess(-1);
}
break;
}
}
}
return ;
}
/*获取多播选项*/
if(argv[1][0]=='-'&&argv[1][1]=='m')
{
/*多播标志设置为真*/
multiFlag = TRUE;
for(i=2; i < argc ;i++)
{
if (argv[i][0] == '-')
{
switch (tolower(argv[i][1]))
{
/*如果是发送者*/
ca 's':
multiSendFlag = TRUE;
break;
/*多播地址*/
ca 'h':
if (strlen(argv[i]) > 3)
dwMulticastGroup = inet_addr(&argv[i][3]);
break;
/*本地接口地址*/
ca 'i':
if (strlen(argv[i]) > 3)
dwInterface = inet_addr(&argv[i][3]);
break;
/*多播端口号*/
ca 'p':
if (strlen(argv[i]) > 3)
mPort = atoi(&argv[i][3]);
break;
/*环回标志设置为真*/
ca 'l':
bLoopBack = TRUE;
break;
/*发送(接收)的数量*/
ca 'n':
mCount = atoi(&argv[i][3]);
break;
/*其他情况,显示用户帮助,终止程序*/
default:
urHelpMul();
break;
}
}
}
bleeding love什么意思 }
return;
}
/*全局用户帮助函数*/
void urHelpAll()
{
printf("Plea choo broadcast[-b] or multicast[-m] !\n");