出版时间:2011-10 出版社:清华大学出版社 作者:李亚锋 页数:224
Tag标签:无
内容概要
C语言是计算机编程史上生命力最强、影响力最广的一种编程语言,迄今为止C语言仍旧是开发领域中最重要、最受欢迎的编程语言之一。本书以Google、Intel、Microsoft、IBM、华为、中兴、百度等上百家国际知名IT企业的C语言面试、笔试题为研究对象,深入分析这些典型C面试、笔试题的出题意图及解题方法。本书不仅仅是为了让读者了解知名企业的面试、笔试题目,更重要的是让读者明白企业需要应聘人员具备哪些C语言核心技术,以及让读者明白在实际项目开发中C语言是如何被灵活运用的。这是一本非常适合求职人员在求职路上征战参考的技术宝典,也是一本值得各大企业招聘使用的参考手册。
本书不仅适合高校软件工程专业的本科和研究生学习使用,也适合在职软件工程师工作参考之用。
作者简介
李亚锋:毕业于北京大学软件与微电子学院,获软件工程硕士学位。曾先后就职于威盛电子(中国)有限公司、O2Micro北京分公司,任高级软件工程师职位。曾参与开发过Linux网络设备驱动、手机SD/MMC卡,LCD,USB等驱动程序。著作有《ARM嵌入式Linux设备驱动实例开发》和《ARM嵌入式Linux系统开发从入门到精通》。
书籍目录
第0章 笔试题自测
第1章 灵魂一指针
1.1 指针与字符串
1.1.1 知识点题型
101 p++
102 打印内存地址
103 sprintf0与snprintf
104 指针常量与常量指针
105 字符与字符串
106 指针变量与普通变量
107 指针运算
108 “%.10.5s”
1.1.2 综合题型
109 字符串复制
110 统计字符个数
1.2 指针与数组
1.2.1 知识点题型
111 一维数组与指针
112 数组中strlen与sizeof的区别
113 多维数组
114 数组作为参数传递给
……
第2章 数据存储——内存
第3章 程序的思想——算法
第4章 程序的基本单位——函数
第5章 数据的传递——网络
第6章 专用的计算机系统——嵌入式
第7章 终结语
参考文献
章节摘录
版权页: 插图: 上述代码和之前的代码相比稍微比较多,这里可以分成两大部分来讲述:main()主函数实现与flooder attack()的SYN洪流攻击函数实现。 首先来分析main()函数实现。由于这里要实现支持多种协议的SYN包攻击,所以需要进行配置选择,为了使用方便,这里通过main()函数的命令行参数来配置发送SYN洪流包的选项。具体用法如下: 其中flooder为SYN洪流实现代码编译后的可执行文件名称;protocol为指定协议选项(如TCP、UDP或ICMP,这里不区分大小写);dstaddr为要攻击的服务器主机名或IP地址;pcount为要发送的SYN包个数,默认为无穷多个(unsigned int类型范围之内的值);srcaddr为发送端的IP地址,默认为随机产生的IP地址(实际攻击中一般用随机IP地址欺骗服务器);dstport与srcport分别指定目标端口号和源端口号。 明白该题目要实现的软件用法之后,接着来看main()函数的实现。第178~181行,打印一段关于此软件相关的描述性字符串。第182、183行,检查main()函数命令行参数个数是否符合设计规定,当参数个数少于3个或大于7个时不符合要求,故打印出帮助信息。第184~191行,通过命令行参数获取协议类型,即根据第1个参数的字符串内容来判断是TCP、UDP或ICMP,当不是这3种协议中的任意一个时,打印帮助信息。这里使用strcasecmp()库函数来实现字符串比较,该函数与strcmp()函数的区别是它不关心字符的大小写,比如“UDP”和“udp”对strcasecnlp()函数来说是一样的字符串。第192行,调用srand()函数为产生伪随机数的产生提供种子,提供种子的目的是让它在多次使用时产生的伪随机数不同。虽然random()函数每次都是产生一个伪随机数,但如果每次种子都相同的话,那么它产生的随机数也就是固定的,所以通过提供不同的种子使它产生不同的随机数。后面的代码中要使用random()涵数可以随机产生源IP地址、源端口号、目的端口号,这样就可以欺骗服务器它发送的SYN洪流包来自不同的机器。第193行,通过命令行的第2个参数获得IP地址,当第2个参数为服务器的域名或主机名时,可以通过9ethostbyname()系统函数将域名或主机名转换为IP地址。第194、195行,获取要发送SYN包的个数,如果没有该参数那么会一直发送包,默认最多可以发送unsigned int的最大值。第196、197行,获得发送SYN包的源地址,如果没有该参数,SYN包地址默认为随机产生的IP地址。第l98~201行,获得目的端口和源端口,如果没有该参数,将会动态随机产生。第203~206行,调用socket()系统函数创建一个原始套接字SOCK RAW,该套接字可以自己封装IP数据包(TCP/UDP/ICMP包等),操作灵活。第208~211行,调用setsockopt()系统函数来设置socket的一些配置选项,通过设置IP HDRINCL项来告诉系统这里开发人员自己封装IP头而不是让协议栈自动添加,如果不设置该项的话,协议栈会自动添加IP头部信息。
编辑推荐
《经典C面试真题精讲》不仅适合高校软件工程专业的本科和研究生学习使用,也适合在职软件工程师工作参考之用。
图书封面
图书标签Tags
无
评论、评分、阅读与下载