下面的代码输出 ip 地址是正确的,但这端口一直变化,内存地址应该正确了呀。
ip = (struct libnet_ipv4_hdr*)(packet + ETHERNET_H_LEN);
tcp = (struct libnet_tcp_hdr*)(ip + ip->ip_hl * 4);
u_int8_t* addr = (u_int8_t*)(&(ip->ip_src.s_addr));
printf("src ip: %d:%d:%d:%d\n", addr[0], addr[1], addr[2], addr[3]);
printf("src port: %d, dst port: %d\n", ntohs(tcp->th_sport), ntohs(tcp->th_dport));