热门标签 | HotTags
当前位置:  开发笔记 > IOS > 正文

求助:构造IP头问题

求助:构造IP头问题--Linux通用技术-Linux编程与内核信息,下面是详情阅读。
试着构造一个最简单的IP包,发送出去.却老是被报以Segmentation fault 错误的位置我通
过printf跟踪,在程序里已指出,还望各位高手指点:


#include
#include
#include
#include
#include

#include
#include

int main(void)
{
int s, i, on = 1;
char buf[200] = {0} ; // for store the data
struct ip *uheader_ip;
struct sockaddr_in dip;
struct icmphdr *uheader_icmp = (struct icmphdr *)(uheader_ip + 1);
char * sipaddr = "\xc0\xa8\x23\xa9"; // 192.168.35.169
char *dipaddr = "\xc0\xa8\x24\x59"; //192.168.36.89

// create a raw_socket
if((s = socket(AF_INET, SOCK_RAW, IPPROTO_UDP)) <0 ) {
perror("socket");
exit(1);
}

dip.sin_addr.s_addr = inet_addr("192.168.36.89");
dip.sin_family = AF_INET;
// set the IP_HDRINCL option ,so the user have
//the right to create his own IP header
if( (i = setsockopt (s, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on))) <0 )
{
perror ("setsocket");
exit(1);
}


//notice : the big/little order

//fill the ip header
uheader_ip =(struct ip *) buf;
uheader_ip->ip_hl = 20;
uheader_ip->ip_v = 4;
uheader_ip->ip_tos = 0;
uheader_ip->ip_len = 200 ;
uheader_ip->ip_off = 0;
uheader_ip->ip_ttl = 255;
uheader_ip->ip_p = 1;
//struct in_addr

//错误位置就在这两行!!
uheader_ip->ip_src.s_addr = inet_addr("192.168.35.169");
uheader_ip->ip_dst.s_addr = inet_addr("192.168.36.89");


//fill the icmp header
uheader_icmp->type = ICMP_ECHO;
uheader_icmp->code = 0;
uheader_icmp->checksum = htons (~(ICMP_ECHO) <<8);

if(sendto(s, buf, sizeof(buf), 0, (struct sockaddr*)&dip, 4) ) {
perror("sendto");
}
return 1;
推荐阅读
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文介绍了网络编程的要点,包括InetAddress类获取IP地址的方法,IP地址的定义和表示方法,IPv4和IPv6的区别,以及网络通信协议中的端口和协议类型。 ... [详细]
  • 本文介绍了iOS开发中检测和解决内存泄漏的方法,包括静态分析、使用instruments检查内存泄漏以及代码测试等。同时还介绍了最能挣钱的行业,包括互联网行业、娱乐行业、教育行业、智能行业和老年服务行业,并提供了选行业的技巧。 ... [详细]
  • 本文分享了一位Android开发者多年来对于Android开发所需掌握的技能的笔记,包括架构师基础、高级UI开源框架、Android Framework开发、性能优化、音视频精编源码解析、Flutter学习进阶、微信小程序开发以及百大框架源码解读等方面的知识。文章强调了技术栈和布局的重要性,鼓励开发者做好学习规划和技术布局,以提升自己的竞争力和市场价值。 ... [详细]
  • HSRP热备份路由器协议的应用及配置
    本文介绍了HSRP热备份路由器协议的应用及配置方法,包括设计目标、工作原理、配置命令等。通过HSRP协议,可以实现在主动路由器故障时自动切换到备份路由器,保证网络连通性。此外,还介绍了R1和R2路由器的配置方法以及Sw1和Sw2交换机的配置方法,最后还介绍了测试连通性和路由追踪的方法。 ... [详细]
  • 介绍一款好用的内网穿透工具FRP
    本文介绍了一款好用的内网穿透工具FRP,它是一个使用Go语言开发的高性能的反向代理应用。FRP支持多种协议类型,并且可以根据域名进行路由转发。 ... [详细]
  • 1、Ipv4只能用于内网,外网只能用2、DNS:把域名解析成ip地址3、MAC地址就是物理地址(网卡序列号)   IP地址:电脑序列号4、不同电脑,微信之间互相通信,靠的是端口;  ... [详细]
  • Linux防火墙配置—允许转发
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 计算机网络计算机网络分层结构
    为了解决计算机网络复杂的问题,提出了计算机网络分层结构。计算机网络分层结构主要有OSI7层参考模型,TCPIP4层参考模型两种。为什么要分层不同产商 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了VoLTE端到端业务详解|VoLTE用户注册流程相关的知识,希望对你有一定的参考价值。书籍来源:艾怀丽 ... [详细]
  • slmp协议和mc协议区别_TCP协议与UDP协议的区别
    TCP协议和UDP协议TCPIP协议是一个协议簇。里面包括很多协议的,UDP只是其中的一个,之所以命名为TCPIP协议,因 ... [详细]
  • UDP千兆以太网FPGA_verilog实现(四、代码前期准备UDP和IP协议构建)
    UDP:userDatagramprotocol用户数据报协议无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETFRFC76 ... [详细]
  • SQL Server 2008 到底需要使用哪些端口?
    SQLServer2008到底需要使用哪些端口?-下面就来介绍下SQLServer2008中使用的端口有哪些:  首先,最常用最常见的就是1433端口。这个是数据库引擎的端口,如果 ... [详细]
author-avatar
崔建洋
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有