⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 udpflood.c

📁 ti的TMS320C64XEMAC应用源代码
💻 C
字号:
/* ***********************************************************
* THIS PROGRAM IS PROVIDED "AS IS". TI MAKES NO WARRANTIES OR
* REPRESENTATIONS, EITHER EXPRESS, IMPLIED OR STATUTORY,
* INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR
* COMPLETENESS OF RESPONSES, RESULTS AND LACK OF NEGLIGENCE.
* TI DISCLAIMS ANY WARRANTY OF TITLE, QUIET ENJOYMENT, QUIET
* POSSESSION, AND NON-INFRINGEMENT OF ANY THIRD PARTY
* INTELLECTUAL PROPERTY RIGHTS WITH REGARD TO THE PROGRAM OR
* YOUR USE OF THE PROGRAM.
*
* IN NO EVENT SHALL TI BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
* CONSEQUENTIAL OR INDIRECT DAMAGES, HOWEVER CAUSED, ON ANY
* THEORY OF LIABILITY AND WHETHER OR NOT TI HAS BEEN ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGES, ARISING IN ANY WAY OUT
* OF THIS AGREEMENT, THE PROGRAM, OR YOUR USE OF THE PROGRAM.
* EXCLUDED DAMAGES INCLUDE, BUT ARE NOT LIMITED TO, COST OF
* REMOVAL OR REINSTALLATION, COMPUTER TIME, LABOR COSTS, LOSS
* OF GOODWILL, LOSS OF PROFITS, LOSS OF SAVINGS, OR LOSS OF
* USE OR INTERRUPTION OF BUSINESS. IN NO EVENT WILL TI'S
* AGGREGATE LIABILITY UNDER THIS AGREEMENT OR ARISING OUT OF
* YOUR USE OF THE PROGRAM EXCEED FIVE HUNDRED DOLLARS
* (U.S.$500).
*
* Unless otherwise stated, the Program written and copyrighted
* by Texas Instruments is distributed as "freeware".  You may,
* only under TI's copyright in the Program, use and modify the
* Program without any charge or restriction.  You may
* distribute to third parties, provided that you transfer a
* copy of this license to the third party and the third party
* agrees to these terms by its first use of the Program. You
* must reproduce the copyright notice and any other legend of
* ownership on each copy or partial copy, of the Program.
*
* You acknowledge and agree that the Program contains
* copyrighted material, trade secrets and other TI proprietary
* information and is protected by copyright laws,
* international copyright treaties, and trade secret laws, as
* well as other intellectual property laws.  To protect TI's
* rights in the Program, you agree not to decompile, reverse
* engineer, disassemble or otherwise translate any object code
* versions of the Program to a human-readable form.  You agree
* that in no event will you alter, remove or destroy any
* copyright notice included in the Program.  TI reserves all
* rights not specifically granted under this license. Except
* as specifically provided herein, nothing in this agreement
* shall be construed as conferring by implication, estoppel,
* or otherwise, upon you, any license or other right under any
* TI patents, copyrights or trade secrets.
*
* You may not use the Program in non-TI devices.
* ********************************************************* */


//---------------------------------------------------------------------------
// UDP Echo Program
//---------------------------------------------------------------------------
// TESTUDP.C
//
// Test the crude echo by sending to port 7 and waiting
// for replies.
//
// Author: Michael Denio
//---------------------------------------------------------------------------
#include <windows.h>
#include <stdio.h>
#include <time.h>
#include <winsock.h>

#define UDP_LOW   0
#define UDP_HIGH  1468  // Note: Windows FRAGMENTS higher UDP sizes!!!

int main( int argc, char *argv[] )
{
    WORD                wVersionRequested;
    WSADATA             wsaData;
    SOCKET              s;
    struct sockaddr_in  sin;
    unsigned char       *pBuf = 0;
    int                 tmp1,tmp2,tmp3,tmp4;
    int                 idle, test;
    unsigned int        waitpkt;
    fd_set              readfds;
    struct timeval      timeout;
    time_t              ts,tn;


    wVersionRequested = MAKEWORD(1, 1);
    tmp1 = WSAStartup(wVersionRequested, &wsaData);
    if (tmp1 != 0)
    {
        printf("\r\nUnable to initialize WinSock for host info");
        exit(0);
    }

    if( (argc != 2) ||
        sscanf(argv[1],"%03d.%03d.%03d.%03d",&tmp1,&tmp2,&tmp3,&tmp4)!=4 ||
        (tmp1 < 0 || tmp1 > 255 || tmp2 < 0 || tmp2 > 255 ||
         tmp3 < 0 || tmp3 > 255 || tmp4 < 0 || tmp4 > 255) )
    {
        printf("\nUsage: %s <x.x.x.x>\n",argv[0]);
        goto leave;
    }

    tmp1 |= tmp2 << 8;
    tmp1 |= tmp3 << 16;
    tmp1 |= tmp4 << 24;

    printf("\nTesting DSP client at %d.%d.%d.%d\n",
                tmp1&255, (tmp1>>8)&255, (tmp1>>16)&255, (tmp1>>24)&255 );

    printf("Testing UDP packet payloads from %d to %d bytes...\n",
            UDP_LOW, UDP_HIGH );

    s = socket( AF_INET, SOCK_DGRAM, 0 );
    if( s < 0 )
    {
        printf("failed connect (%d)\n",WSAGetLastError());
        goto leave;
    }

    sin.sin_family      = AF_INET;
    sin.sin_addr.s_addr = 0;
    sin.sin_port        = htons(1234);

    if ( bind( s, &sin, sizeof(sin) ) < 0 )
    {
        printf("failed bind (%d)\n",WSAGetLastError());
        goto leave;
    }

    // Allocate a working buffer
    if( !(pBuf = malloc( 3000 )) )
    {
        printf("failed temp buffer allocation\n");
        goto leave;
    }

    idle     = 0;
    waitpkt  = 0;

    timeout.tv_sec = 0;
    timeout.tv_usec = 0;

    sin.sin_addr.s_addr = tmp1;
    sin.sin_port        = htons(7);

    ts = time(0);

    test = UDP_LOW;
    tmp3 = 0;
    while( !kbhit() )
    {
        // Init buffer
        tmp2 = test;
        for( tmp1=0; tmp1<test; tmp1++ )
            *(pBuf+tmp1) = tmp2++;

        if( sendto( s, pBuf, test, 0, &sin, sizeof(sin) ) < 0 )
        {
            printf("send failed (%d)\n",WSAGetLastError());
            break;
        }
        tmp3++;

        // Bump test size
        test++;
        if( test > UDP_HIGH )
        {
            printf("Sent %d packets\n",tmp3);
            test = UDP_LOW;
        }
    }

    tn = time(0) - ts;
    printf("Exiting test. Time = %d seconds, Total Packets = %d",tn,tmp3);

leave:
    if( pBuf )
        free( pBuf );
    if( s >= 0 )
        closesocket( s );

    WSACleanup();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -