xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

資源簡介

網上看到很多關于Raw Socket實現UDP數據包發送的例子,可是沒有IPINIP形式的UDP數據包發送,因此自己實現了一個。 環境:gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5) 語言:C

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?

#define?BUFLEN?1000
#define?PORT?8848

typedef?struct?ip_hdr{//ipv4頭部?
unsigned?int?ip_length:4;?/*little-endian*/
unsigned?int?ip_version:4;
unsigned?char?ip_tos;
unsigned?short?ip_total_length;
unsigned?short?ip_id;
unsigned?short?ip_flags;
unsigned?char?ip_ttl;
unsigned?char?ip_protocol;
unsigned?short?ip_cksum;
unsigned?int?ip_source;
unsigned?int?ip_dest;
}ip_hdr;

typedef?struct?udp_hdr{//udp頭部
unsigned?short?s_port;
unsigned?short?d_port;
unsigned?short?length;
unsigned?short?cksum;
}udp_hdr;

typedef?struct?psd_header{//偽頭部,用于計算校驗和

unsigned?int?s_ip;//source?ip

unsigned?int?d_ip;//dest?ip

unsigned?char?mbz;//0

unsigned?char?proto;//proto?type

unsigned?short?plen;//length

}psd_header;

unsigned?short?checksum(unsigned?short*?buffer?int?size)//校驗和
{
unsigned?long?cksum?=?0;
while(size>1){
cksum?+=?*buffer++;
size?-=?sizeof(unsigned?short);
}
if(size){
cksum?+=?*(unsigned?char*)buffer;
}
cksum?=?(cksum>>16)?+?(cksum&0xffff);?//將高16bit與低16bit相加

cksum?+=?(cksum>>16);?//將進位到高位的16bit與低16bit?再相加

return?(unsigned?short)(~cksum);
}

int?main(int?argc?char?*argv[])
{
char?buf[BUFLEN];
int?sockfd?=?-1;
????
struct?sockaddr_in6?host_addr;
if((sockfd?=?socket(AF_INET6?SOCK_RAW?IPPROTO_IPIP))<0){
perror(“socket()?error:“);
exit(1);
}

bzero(&host_addrsizeof(host_addr

評論

共有 條評論