UDP C代码

更新时间:2023-07-04 19:50:26 阅读: 评论:0

/*加载库文件*/
#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");

本文发布于:2023-07-04 19:50:26,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/167091.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:广播   用户   帮助
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图