出版時間:2011-10 出版社:清華大學(xué)出版社 作者:李亞鋒 頁數(shù):224
Tag標(biāo)簽:無
內(nèi)容概要
C語言是計算機編程史上生命力最強、影響力最廣的一種編程語言,迄今為止C語言仍舊是開發(fā)領(lǐng)域中最重要、最受歡迎的編程語言之一。本書以Google、Intel、Microsoft、IBM、華為、中興、百度等上百家國際知名IT企業(yè)的C語言面試、筆試題為研究對象,深入分析這些典型C面試、筆試題的出題意圖及解題方法。本書不僅僅是為了讓讀者了解知名企業(yè)的面試、筆試題目,更重要的是讓讀者明白企業(yè)需要應(yīng)聘人員具備哪些C語言核心技術(shù),以及讓讀者明白在實際項目開發(fā)中C語言是如何被靈活運用的。這是一本非常適合求職人員在求職路上征戰(zhàn)參考的技術(shù)寶典,也是一本值得各大企業(yè)招聘使用的參考手冊。
本書不僅適合高校軟件工程專業(yè)的本科和研究生學(xué)習(xí)使用,也適合在職軟件工程師工作參考之用。
作者簡介
李亞鋒:畢業(yè)于北京大學(xué)軟件與微電子學(xué)院,獲軟件工程碩士學(xué)位。曾先后就職于威盛電子(中國)有限公司、O2Micro北京分公司,任高級軟件工程師職位。曾參與開發(fā)過Linux網(wǎng)絡(luò)設(shè)備驅(qū)動、手機SD/MMC卡,LCD,USB等驅(qū)動程序。著作有《ARM嵌入式Linux設(shè)備驅(qū)動實例開發(fā)》和《ARM嵌入式Linux系統(tǒng)開發(fā)從入門到精通》。
書籍目錄
第0章 筆試題自測
第1章 靈魂一指針
1.1 指針與字符串
1.1.1 知識點題型
101 p++
102 打印內(nèi)存地址
103 sprintf0與snprintf
104 指針常量與常量指針
105 字符與字符串
106 指針變量與普通變量
107 指針運算
108 “%.10.5s”
1.1.2 綜合題型
109 字符串復(fù)制
110 統(tǒng)計字符個數(shù)
1.2 指針與數(shù)組
1.2.1 知識點題型
111 一維數(shù)組與指針
112 數(shù)組中strlen與sizeof的區(qū)別
113 多維數(shù)組
114 數(shù)組作為參數(shù)傳遞給
……
第2章 數(shù)據(jù)存儲——內(nèi)存
第3章 程序的思想——算法
第4章 程序的基本單位——函數(shù)
第5章 數(shù)據(jù)的傳遞——網(wǎng)絡(luò)
第6章 專用的計算機系統(tǒng)——嵌入式
第7章 終結(jié)語
參考文獻
章節(jié)摘錄
版權(quán)頁: 插圖: 上述代碼和之前的代碼相比稍微比較多,這里可以分成兩大部分來講述:main()主函數(shù)實現(xiàn)與flooder attack()的SYN洪流攻擊函數(shù)實現(xiàn)。 首先來分析main()函數(shù)實現(xiàn)。由于這里要實現(xiàn)支持多種協(xié)議的SYN包攻擊,所以需要進行配置選擇,為了使用方便,這里通過main()函數(shù)的命令行參數(shù)來配置發(fā)送SYN洪流包的選項。具體用法如下: 其中flooder為SYN洪流實現(xiàn)代碼編譯后的可執(zhí)行文件名稱;protocol為指定協(xié)議選項(如TCP、UDP或ICMP,這里不區(qū)分大小寫);dstaddr為要攻擊的服務(wù)器主機名或IP地址;pcount為要發(fā)送的SYN包個數(shù),默認為無窮多個(unsigned int類型范圍之內(nèi)的值);srcaddr為發(fā)送端的IP地址,默認為隨機產(chǎn)生的IP地址(實際攻擊中一般用隨機IP地址欺騙服務(wù)器);dstport與srcport分別指定目標(biāo)端口號和源端口號。 明白該題目要實現(xiàn)的軟件用法之后,接著來看main()函數(shù)的實現(xiàn)。第178~181行,打印一段關(guān)于此軟件相關(guān)的描述性字符串。第182、183行,檢查main()函數(shù)命令行參數(shù)個數(shù)是否符合設(shè)計規(guī)定,當(dāng)參數(shù)個數(shù)少于3個或大于7個時不符合要求,故打印出幫助信息。第184~191行,通過命令行參數(shù)獲取協(xié)議類型,即根據(jù)第1個參數(shù)的字符串內(nèi)容來判斷是TCP、UDP或ICMP,當(dāng)不是這3種協(xié)議中的任意一個時,打印幫助信息。這里使用strcasecmp()庫函數(shù)來實現(xiàn)字符串比較,該函數(shù)與strcmp()函數(shù)的區(qū)別是它不關(guān)心字符的大小寫,比如“UDP”和“udp”對strcasecnlp()函數(shù)來說是一樣的字符串。第192行,調(diào)用srand()函數(shù)為產(chǎn)生偽隨機數(shù)的產(chǎn)生提供種子,提供種子的目的是讓它在多次使用時產(chǎn)生的偽隨機數(shù)不同。雖然random()函數(shù)每次都是產(chǎn)生一個偽隨機數(shù),但如果每次種子都相同的話,那么它產(chǎn)生的隨機數(shù)也就是固定的,所以通過提供不同的種子使它產(chǎn)生不同的隨機數(shù)。后面的代碼中要使用random()涵數(shù)可以隨機產(chǎn)生源IP地址、源端口號、目的端口號,這樣就可以欺騙服務(wù)器它發(fā)送的SYN洪流包來自不同的機器。第193行,通過命令行的第2個參數(shù)獲得IP地址,當(dāng)?shù)?個參數(shù)為服務(wù)器的域名或主機名時,可以通過9ethostbyname()系統(tǒng)函數(shù)將域名或主機名轉(zhuǎn)換為IP地址。第194、195行,獲取要發(fā)送SYN包的個數(shù),如果沒有該參數(shù)那么會一直發(fā)送包,默認最多可以發(fā)送unsigned int的最大值。第196、197行,獲得發(fā)送SYN包的源地址,如果沒有該參數(shù),SYN包地址默認為隨機產(chǎn)生的IP地址。第l98~201行,獲得目的端口和源端口,如果沒有該參數(shù),將會動態(tài)隨機產(chǎn)生。第203~206行,調(diào)用socket()系統(tǒng)函數(shù)創(chuàng)建一個原始套接字SOCK RAW,該套接字可以自己封裝IP數(shù)據(jù)包(TCP/UDP/ICMP包等),操作靈活。第208~211行,調(diào)用setsockopt()系統(tǒng)函數(shù)來設(shè)置socket的一些配置選項,通過設(shè)置IP HDRINCL項來告訴系統(tǒng)這里開發(fā)人員自己封裝IP頭而不是讓協(xié)議棧自動添加,如果不設(shè)置該項的話,協(xié)議棧會自動添加IP頭部信息。
編輯推薦
《經(jīng)典C面試真題精講》不僅適合高校軟件工程專業(yè)的本科和研究生學(xué)習(xí)使用,也適合在職軟件工程師工作參考之用。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載