dns服务器性能测试工具,DNS 服务器压力测试程序(2)

DNS 服务器压力测试程序(2)

2009-05-13 04:24:13来源:未知 阅读 ()

c4468b3f4df77e96b0a416fa2a870fba.png

void

gen_dns_data(char *name)

{

char b[512];

int n = 0;

char *p, *q = b;

const char *sep = ".";

char *brkt;

memcpy(dns, dns1, sizeof(dns1));

for ((p = strtok_r(name, sep, &brkt)); p; (p = strtok_r(NULL, sep, &brkt))) {

*q++ = strlen(p);

n = sprintf(q, "%s", p);

q+= n;

*q = 0;

}

n = strlen(b) + 1;

memcpy(dns + sizeof(dns1), b, n);

memcpy(dns + sizeof(dns1) + n, dns2, sizeof(dns2));

dns_len = sizeof(dns1) + n + sizeof(dns2);

}

/* check sum */

unsigned short

ip_sum (char *addr, int len)

{

register u_short nleft = len;

register u_short *w;

register int sum = 0;

w = (u_short *)addr;

while (nleft > 1) {

sum += *w++;

nleft -= 2;

}

if (nleft == 1)

sum += (*(u_char *)w & 0xff);

sum = (sum >> 16) + (sum & 0xffff);

sum += (sum >> 16);

return (~sum & 0xffff);

}

unsigned long

getaddr(char *name)

{

struct hostent *h;

h = gethostbyname(name);

if (!h) {

printf("Unknown host %s\n", name);

exit(-1);

}

return *(unsigned long *)h->h_addr;

}

void

send_dns(unsigned long lip, unsigned long rip, unsigned short port)

{

struct iphdr ih;

struct udphdr uh;

struct sockaddr_in sin;

char buf[512];

ih.ver = 4;

ih.ihl = 5;

ih.tos = 0;

ih.len = sizeof(ih) + sizeof(uh) + dns_len;

ih.id = port;

ih.frag = 0;

ih.ttl = 64;

ih.proto = 17;

ih.sum = 0;

ih.sip = lip;

ih.dip = rip;

uh.sport = htons(port);

uh.dport = 0x3500;

uh.len = htons(sizeof(uh) + dns_len);

uh.sum = 0;

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值