Windows_socket編程入門

Windows_socket編程入門

ID:39470060

大?。?5.00 KB

頁數(shù):14頁

時間:2019-07-04

Windows_socket編程入門_第1頁
Windows_socket編程入門_第2頁
Windows_socket編程入門_第3頁
Windows_socket編程入門_第4頁
Windows_socket編程入門_第5頁
資源描述:

《Windows_socket編程入門》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

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

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

3、如果需要轉(zhuǎn)載,請注明原作者和出處。如果有商業(yè)運(yùn)作的需求,請直接和我聯(lián)系。第二章Windows網(wǎng)絡(luò)編程基礎(chǔ)這本書主要探索Windows網(wǎng)絡(luò)編程,開發(fā)平臺是Windows2000和VisualC++.NET,從一個合格的C++程序員到網(wǎng)絡(luò)編程高手,還是需要花不少功夫,至少我認(rèn)為寫一個聊天程序很簡單,而要寫一個能同時響應(yīng)成千上萬用戶的高性能網(wǎng)絡(luò)程序,的確不容易。這篇文章所介紹的方法也并不是能直接應(yīng)用于每一個具體的應(yīng)用程序,只能作為學(xué)習(xí)的參考資料。開發(fā)高性能網(wǎng)絡(luò)游戲恐怕是促使很多程序員研究網(wǎng)絡(luò)編程的原因(包

4、括我),現(xiàn)在的大型網(wǎng)絡(luò)游戲?qū)ν瑫r在線人數(shù)的要求比較高,真正的項目往往采取多個服務(wù)器(組)負(fù)荷分擔(dān)的方式工作,我將首先把注意力放到單個服務(wù)器的情況。大家都知道,我們用得最多的協(xié)議是UDP和TCP,UDP是不可靠傳輸服務(wù),TCP是可靠傳輸服務(wù)。UDP就像點(diǎn)對點(diǎn)的數(shù)據(jù)傳輸一樣,發(fā)送者把數(shù)據(jù)打包,包上有收信者的地址和其他必要信息,至于收信者能不能收到,UDP協(xié)議并不保證。而TCP協(xié)議就像(實際他們是一個層次的網(wǎng)絡(luò)協(xié)議)是建立在UDP的基礎(chǔ)上,加入了校驗和重傳等復(fù)雜的機(jī)制來保證數(shù)據(jù)可靠的傳達(dá)到收信者。關(guān)于網(wǎng)絡(luò)

5、協(xié)議的具體內(nèi)容,讀者可以參考專門介紹網(wǎng)絡(luò)協(xié)議的書籍,或者查看RFC中的有關(guān)內(nèi)容。本書直接探討編程實現(xiàn)網(wǎng)絡(luò)程序的問題。2.1WindowSocket介紹WindowsSocket是從UNIXSocket繼承發(fā)展而來,最新的版本是2.2。進(jìn)行Windows網(wǎng)絡(luò)編程,你需要在你的程序中包含WINSOCK2.H或MSWSOCK.H,同時你需要添加引入庫WS2_32.LIB或WSOCK32.LIB。準(zhǔn)備好后,你就可以著手建立你的第一個網(wǎng)絡(luò)程序了。Socket編程有阻塞和非阻塞兩種,在操作系統(tǒng)I/O實現(xiàn)時又有幾

6、種模型,包括Select,WSAAsyncSelect,WSAEventSelect,IO重疊模型,完成端口等。要學(xué)習(xí)基本的網(wǎng)絡(luò)編程概念,可以選擇從阻塞模式開始,而要開發(fā)真正實用的程序,就要進(jìn)行非阻塞模式的編程(很難想象一個大型服務(wù)器采用阻塞模式進(jìn)行網(wǎng)絡(luò)通信)。在選擇I/O模型時,我建議初學(xué)者可以從WSAAsyncSelect模型開始,因為它比較簡單,而且有一定的實用性。但是,幾乎所有人都認(rèn)識到,要開發(fā)同時響應(yīng)成千上萬用戶的網(wǎng)絡(luò)程序,完成端口模型是最好的選擇。既然完成端口模型是最好的選擇,那為什么我

7、們不直接寫出一個使用完成端口的程序,然后大家稍加修改就OK了。我認(rèn)為這確實是一個好的想法,但是真正做項目的時候,不同的情況對程序有不同的要求,如果不深入學(xué)習(xí)網(wǎng)絡(luò)編程的各方面知識,是不可能寫出符合要求的程序,在學(xué)習(xí)網(wǎng)絡(luò)編程以前,我建議讀者先學(xué)習(xí)一下網(wǎng)絡(luò)協(xié)議。2.2第一個網(wǎng)絡(luò)程序由于服務(wù)器/客戶端模式的網(wǎng)絡(luò)應(yīng)用比較多,而且服務(wù)器端的設(shè)計是重點(diǎn)和難點(diǎn)。所以我想首先探討服務(wù)器的設(shè)計方法,在完成服務(wù)器的設(shè)計后再探討其他模式的網(wǎng)絡(luò)程序。設(shè)計一個基本的網(wǎng)絡(luò)服務(wù)器有以下幾個步驟:1、初始化WindowsSocket

8、2、創(chuàng)建一個監(jiān)聽的Socket3、設(shè)置服務(wù)器地址信息,并將監(jiān)聽端口綁定到這個地址上4、開始監(jiān)聽5、接受客戶端連接6、和客戶端通信7、結(jié)束服務(wù)并清理WindowsSocket和相關(guān)數(shù)據(jù),或者返回第4步我們可以看出設(shè)計一個最簡單的服務(wù)器并不需要太多的代碼,它完全可以做一個小型的聊天程序,或進(jìn)行數(shù)據(jù)的傳輸。但是這只是我們的開始,我們的最終目的是建立一個有大規(guī)模響應(yīng)能力的網(wǎng)絡(luò)服務(wù)器。如果讀者對操作系統(tǒng)部分的線程使用還有疑問,我建議你現(xiàn)在就開始復(fù)習(xí),因為我們經(jīng)常使用線程來提高程

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

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

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