Windows_SOCKET編程

Windows_SOCKET編程

ID:38345144

大?。?0.00 KB

頁數(shù):14頁

時(shí)間:2019-06-10

Windows_SOCKET編程_第1頁
Windows_SOCKET編程_第2頁
Windows_SOCKET編程_第3頁
Windows_SOCKET編程_第4頁
Windows_SOCKET編程_第5頁
資源描述:

《Windows_SOCKET編程》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、WindowsSOCKET編程第一章序言我寫這個(gè)專題的目的,一方面是為了通過對(duì)網(wǎng)絡(luò)編程再一次系統(tǒng)的總結(jié),提高自己的網(wǎng)絡(luò)編程水平,特別是Windows下的網(wǎng)絡(luò)編程水平。同時(shí),我也希望,能為眾多初學(xué)網(wǎng)絡(luò)編程的人提供一點(diǎn)幫助,因?yàn)槲议_始學(xué)習(xí)網(wǎng)絡(luò)編程的時(shí)候,能找到的資料就很少。當(dāng)然,花錢可以買到翻譯版本的書:)首先向大家推薦一本很好的參考書,NetworkProgrammingforMicrosoftWindows2nd,初學(xué)網(wǎng)絡(luò)編程的時(shí)候我還不知道有這樣一本好書,只是上各大論壇把能找到的網(wǎng)絡(luò)編程方面的文章和代碼下載下來,然后自己研

2、究。后來看到別人推薦這一本書,下載了一個(gè),看了感覺非常好,里面的內(nèi)容寫得很規(guī)范,條理也很清楚,英文好的朋友可以直接閱讀,不然就只好去弄一本翻譯好的來研究了。我試著從Windows編程的基礎(chǔ)開始,一直到探索建立高性能的網(wǎng)絡(luò)應(yīng)用程序。我說過,我并不是以高手的身份寫這本書,而是以和大家一起學(xué)習(xí)的心態(tài)學(xué)習(xí)網(wǎng)絡(luò)編程,寫書只是讓自己的思路更清晰,以后還可以翻閱。所以,我不保證書中所有的內(nèi)容都是絕對(duì)正確和標(biāo)準(zhǔn)的,有不妥的地方,還希望高手批評(píng)指正。這本書是完全免費(fèi)的,讀者可以任意使用書中的代碼。但是如果需要轉(zhuǎn)載,請(qǐng)注明原作者和出處。如果有商

3、業(yè)運(yùn)作的需求,請(qǐng)直接和我聯(lián)系。第二章Windows網(wǎng)絡(luò)編程基礎(chǔ)這本書主要探索Windows網(wǎng)絡(luò)編程,開發(fā)平臺(tái)是Windows2000和VisualC++.NET,從一個(gè)合格的C++程序員到網(wǎng)絡(luò)編程高手,還是需要花不少功夫,至少我認(rèn)為寫一個(gè)聊天程序很簡單,而要寫一個(gè)能同時(shí)響應(yīng)成千上萬用戶的高性能網(wǎng)絡(luò)程序,的確不容易。這篇文章所介紹的方法也并不是能直接應(yīng)用于每一個(gè)具體的應(yīng)用程序,只能作為學(xué)習(xí)的參考資料。開發(fā)高性能網(wǎng)絡(luò)游戲恐怕是促使很多程序員研究網(wǎng)絡(luò)編程的原因(包括我),現(xiàn)在的大型網(wǎng)絡(luò)游戲?qū)ν瑫r(shí)在線人數(shù)的要求比較高,真正的項(xiàng)目往往

4、采取多個(gè)服務(wù)器(組)負(fù)荷分擔(dān)的方式工作,我將首先把注意力放到單個(gè)服務(wù)器的情況。大家都知道,我們用得最多的協(xié)議是UDP和TCP,UDP是不可靠傳輸服務(wù),TCP是可靠傳輸服務(wù)。UDP就像點(diǎn)對(duì)點(diǎn)的數(shù)據(jù)傳輸一樣,發(fā)送者把數(shù)據(jù)打包,包上有收信者的地址和其他必要信息,至于收信者能不能收到,UDP協(xié)議并不保證。而TCP協(xié)議就像(實(shí)際他們是一個(gè)層次的網(wǎng)絡(luò)協(xié)議)是建立在UDP的基礎(chǔ)上,加入了校驗(yàn)和重傳等復(fù)雜的機(jī)制來保證數(shù)據(jù)可靠的傳達(dá)到收信者。關(guān)于網(wǎng)絡(luò)協(xié)議的具體內(nèi)容,讀者可以參考專門介紹網(wǎng)絡(luò)協(xié)議的書籍,或者查看RFC中的有關(guān)內(nèi)容。本書直接探討編

5、程實(shí)現(xiàn)網(wǎng)絡(luò)程序的問題。2.1WindowSocket介紹WindowsSocket是從UNIXSocket繼承發(fā)展而來,最新的版本是2.2。進(jìn)行Windows網(wǎng)絡(luò)編程,你需要在你的程序中包含WINSOCK2.H或MSWSOCK.H,同時(shí)你需要添加引入庫WS2_32.LIB或WSOCK32.LIB。準(zhǔn)備好后,你就可以著手建立你的第一個(gè)網(wǎng)絡(luò)程序了。Socket編程有阻塞和非阻塞兩種,在操作系統(tǒng)I/O實(shí)現(xiàn)時(shí)又有幾種模型,包括Select,WSAAsyncSelect,WSAEventSelect,IO重疊模型,完成端口等。要學(xué)習(xí)基

6、本的網(wǎng)絡(luò)編程概念,可以選擇從阻塞模式開始,而要開發(fā)真正實(shí)用的程序,就要進(jìn)行非阻塞模式的編程(很難想象一個(gè)大型服務(wù)器采用阻塞模式進(jìn)行網(wǎng)絡(luò)通信)。在選擇I/O模型時(shí),我建議初學(xué)者可以從WSAAsyncSelect模型開始,因?yàn)樗容^簡單,而且有一定的實(shí)用性。但是,幾乎所有人都認(rèn)識(shí)到,要開發(fā)同時(shí)響應(yīng)成千上萬用戶的網(wǎng)絡(luò)程序,完成端口模型是最好的選擇。既然完成端口模型是最好的選擇,那為什么我們不直接寫出一個(gè)使用完成端口的程序,然后大家稍加修改就OK了。我認(rèn)為這確實(shí)是一個(gè)好的想法,但是真正做項(xiàng)目的時(shí)候,不同的情況對(duì)程序有不同的要求,如果

7、不深入學(xué)習(xí)網(wǎng)絡(luò)編程的各方面知識(shí),是不可能寫出符合要求的程序,在學(xué)習(xí)網(wǎng)絡(luò)編程以前,我建議讀者先學(xué)習(xí)一下網(wǎng)絡(luò)協(xié)議。2.2第一個(gè)網(wǎng)絡(luò)程序由于服務(wù)器/客戶端模式的網(wǎng)絡(luò)應(yīng)用比較多,而且服務(wù)器端的設(shè)計(jì)是重點(diǎn)和難點(diǎn)。所以我想首先探討服務(wù)器的設(shè)計(jì)方法,在完成服務(wù)器的設(shè)計(jì)后再探討其他模式的網(wǎng)絡(luò)程序。設(shè)計(jì)一個(gè)基本的網(wǎng)絡(luò)服務(wù)器有以下幾個(gè)步驟:1、初始化WindowsSocket2、創(chuàng)建一個(gè)監(jiān)聽的Socket3、設(shè)置服務(wù)器地址信息,并將監(jiān)聽端口綁定到這個(gè)地址上4、開始監(jiān)聽5、接受客戶端連接6、和客戶端通信7、結(jié)束服務(wù)并清理WindowsSocket

8、和相關(guān)數(shù)據(jù),或者返回第4步我們可以看出設(shè)計(jì)一個(gè)最簡單的服務(wù)器并不需要太多的代碼,它完全可以做一個(gè)小型的聊天程序,或進(jìn)行數(shù)據(jù)的傳輸。但是這只是我們的開始,我們的最終目的是建立一個(gè)有大規(guī)模響應(yīng)能力的網(wǎng)絡(luò)服務(wù)器。如果讀者對(duì)操作系統(tǒng)部分的線程使用還有疑問,我建議你現(xiàn)在就開始復(fù)習(xí),因?yàn)槲覀兘?jīng)常使用線

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。