📄 udpflood.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 + -