UDP 发包程序
来源:互联网 发布:威新软件科技园 编辑:程序博客网 时间:2024/05/17 01:12
//在Vc上排版得好好的,放上这里就乱了。
// sendPktCmd.cpp : Defines the entry point for the console application.
//
#include <stdio.h>
#include <stdlib.h>
#ifdef WIN32
#include <Winsock2.h>
#include <Ws2tcpip.h>
#else
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>
#endif
#define MAX_BUF_NUM 2048
void print_help_msg();
int main(int argc, char* argv[])
{
int m_hSocket = -1;
struct sockaddr_in m_dstAddr;
struct sockaddr_in src_addr;
char m_SndBuffer[MAX_BUF_NUM];
int passed_interval_num = 0;
int i = 0;
int interval;
int packetNum_per_interval;
int interval_num;
int packet_size;
int ttl;
#ifdef WIN32
WSADATA wsaData;
WSAStartup(0x0202, &wsaData);
#endif
if(argc != 9 )
{
print_help_msg();
return -1;
}
interval = atoi(argv[5]);
packetNum_per_interval = atoi(argv[6]);
interval_num = atoi(argv[7]);
packet_size = atoi(argv[8]);
memset(m_SndBuffer,'a',sizeof(m_SndBuffer));
memset(&m_dstAddr,0, sizeof(m_dstAddr));
m_dstAddr.sin_addr.s_addr = inet_addr(argv[3]);
m_dstAddr.sin_port = htons(atoi(argv[4]));
m_dstAddr.sin_family = AF_INET;
memset(&src_addr, 0,sizeof(src_addr));
src_addr.sin_addr.s_addr = inet_addr(argv[1]);
src_addr.sin_port = htons(atoi(argv[2]));
src_addr.sin_family = AF_INET;
if ((m_hSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1)
{
perror("socket");
return -1;
}
if(-1 ==bind(m_hSocket,(struct sockaddr *)&src_addr,sizeof(src_addr)) )
{
perror("bind");
return -1;
}
ttl = 8;
if(-1 == setsockopt(m_hSocket,IPPROTO_IP,IP_TTL,(char *)&ttl,sizeof(int)))
{
perror("setsockopt to set ttl");
return -1;
}
while(passed_interval_num < interval_num)
{
for (i=0;i<packetNum_per_interval;i++)
{
if (sendto(m_hSocket, m_SndBuffer, packet_size, 0, (struct sockaddr *)&m_dstAddr, sizeof(m_dstAddr)) == -1)
{
perror("sendto");
}
}
#ifdef WIN32
Sleep(interval*1000);//the unit is ms
#else
sleep(interval);//the unit is second
#endif
++passed_interval_num;
}
#ifdef WIN32
closesocket(m_hSocket);
WSACleanup();
#else
close(m_hSocket);
#endif
return 0;
}
void print_help_msg()
{
printf("input error:/n");
printf("the pararmeter is below:/n /
src ip/n /
src port/n /
des ip(10.220.2.244)/n /
des port/n /
interval(unit is second)/n /
packetNum_per_interval/n /
interval_num/n /
packet_size/n /
/n");
}
- UDP 发包程序
- UDP发包收包
- udp 137端口发包
- udp发包大小
- udp发包流程
- udp发包大小选择
- 转 java UDP发包
- UDP 广播发包失败
- UDP发包的延时问题
- 用实际程序来测试udp sendto函数的最大发包大小------为什么是65507?
- python 多线程tcp udp发包 Dos工具。
- 带宽测试初探(UDP发包方式)
- libnet发包例子(tcp udp arp广播)
- libnet发包例子(tcp udp arp广播)
- (ZT)udp发包收包的例子
- 嵌入式 tcp或者udp发包协议使用结构体注意事项
- 服务器安全组策略之【防止UDP发包攻击】
- UDP协议发包的使用(DatagramSocket、DatagramPacket)
- 第一步,设置环境
- SOA服务接口设计最佳实践
- 5.4.3 客户端类
- 运算符的优先级别
- 用AJAX获取二级、三级下拉列表(例子)
- UDP 发包程序
- 如何将Exchange OWA http重定向到https
- Zen Cart的模板设计
- php 表单验证类
- Portal开源实现-Liferay的Portlet Session处理
- 5.4.4清理资源线程
- 酒桌上的规矩
- 在SQL Server中如何获得刚插入一条新记录的自动ID号
- 5.5 客户端设计