WINSOCK API 網(wǎng)絡(luò)編程入門(mén)

WINSOCK API 網(wǎng)絡(luò)編程入門(mén)

ID:39470123

大?。?9.50 KB

頁(yè)數(shù):12頁(yè)

時(shí)間:2019-07-04

WINSOCK API 網(wǎng)絡(luò)編程入門(mén)_第1頁(yè)
WINSOCK API 網(wǎng)絡(luò)編程入門(mén)_第2頁(yè)
WINSOCK API 網(wǎng)絡(luò)編程入門(mén)_第3頁(yè)
WINSOCK API 網(wǎng)絡(luò)編程入門(mén)_第4頁(yè)
WINSOCK API 網(wǎng)絡(luò)編程入門(mén)_第5頁(yè)
資源描述:

《WINSOCK API 網(wǎng)絡(luò)編程入門(mén)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)

1、WINSOCKAPI網(wǎng)絡(luò)編程入門(mén)隨著計(jì)算機(jī)信息技術(shù)的飛速發(fā)展,互聯(lián)網(wǎng)與人類(lèi)社會(huì)的工作、生活越來(lái)越緊密相關(guān),它已經(jīng)成為人類(lèi)獲取、交流信息的重要途徑和手段。所以當(dāng)前對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),網(wǎng)絡(luò)編程已是必備的技能。本實(shí)例詳細(xì)介紹了如何利用WinsockAPI編寫(xiě)網(wǎng)絡(luò)應(yīng)用程序?! ∫?、實(shí)現(xiàn)方法  在網(wǎng)絡(luò)編程中最常用的方案便是Client/Server(客戶機(jī)/服務(wù)器)模型。在這種方案中客戶應(yīng)用程序向服務(wù)器程序請(qǐng)求服務(wù)。一個(gè)服務(wù)程序通常在一個(gè)眾所周知的地址監(jiān)聽(tīng)對(duì)服務(wù)的請(qǐng)求,也就是說(shuō),服務(wù)進(jìn)程一直處于休眠狀態(tài),直到一個(gè)客戶向這個(gè)服務(wù)的地址提出了連接請(qǐng)求。在這個(gè)時(shí)刻,服務(wù)程序被"驚醒"并且為

2、客戶提供服務(wù)-對(duì)客戶的請(qǐng)求作出適當(dāng)?shù)姆磻?yīng)。  為了方便這種Client/Server模型的網(wǎng)絡(luò)編程,90年代初,由Microsoft聯(lián)合了其他幾家公司共同制定了一套WINDOWS下的網(wǎng)絡(luò)編程接口,即WindowsSockets規(guī)范,它不是一種網(wǎng)絡(luò)協(xié)議,而是一套開(kāi)放的、支持多種協(xié)議的Windows下的網(wǎng)絡(luò)編程接口。現(xiàn)在的Winsock已經(jīng)基本上實(shí)現(xiàn)了與協(xié)議無(wú)關(guān),你可以使用Winsock來(lái)調(diào)用多種協(xié)議的功能,但較常使用的是TCP/IP協(xié)議。Socket實(shí)際在計(jì)算機(jī)中提供了一個(gè)通信端口,可以通過(guò)這個(gè)端口與任何一個(gè)具有Socket接口的計(jì)算機(jī)通信。應(yīng)用程序在網(wǎng)絡(luò)上傳輸,接收的信息

3、都通過(guò)這個(gè)Socket接口來(lái)實(shí)現(xiàn)?! ∥④洖閂isualC++定義了Winsock類(lèi)如CAsyncSocket類(lèi)和派生于CAsyncSocket的CSocket類(lèi),它們簡(jiǎn)單易用,讀者朋友當(dāng)然可以使用這些類(lèi)來(lái)實(shí)現(xiàn)自己的網(wǎng)絡(luò)程序,但是為了更好的了解WinsockAPI編程技術(shù),我們這里探討怎樣使用底層的API函數(shù)實(shí)現(xiàn)簡(jiǎn)單的Winsock網(wǎng)絡(luò)應(yīng)用程式設(shè)計(jì),分別說(shuō)明如何在Server端和Client端操作Socket,實(shí)現(xiàn)基于TCP/IP的數(shù)據(jù)傳送,最后給出相關(guān)的源代碼。  在VC中進(jìn)行WINSOCK的API編程開(kāi)發(fā)的時(shí)候,需要在項(xiàng)目中使用下面的三個(gè)文件,否則會(huì)出現(xiàn)編譯錯(cuò)誤?! ?/p>

4、1.WINSOCK.H:這是WINSOCKAPI的頭文件,需要包含在項(xiàng)目中。  2.WSOCK32.LIB:WINSOCKAPI連接庫(kù)文件。在使用中,一定要把它作為項(xiàng)目的非缺省的連接庫(kù)包含到項(xiàng)目文件中去。  3.WINSOCK.DLL:WINSOCK的動(dòng)態(tài)連接庫(kù),位于WINDOWS的安裝目錄下。服務(wù)器端操作socket(套接字)  1.在初始化階段調(diào)用WSAStartup()  此函數(shù)在應(yīng)用程序中初始化WindowsSocketsDLL,只有此函數(shù)調(diào)用成功后,應(yīng)用程序才可以再調(diào)用其他WindowsSocketsDLL中的API函數(shù)。在程式中調(diào)用該函數(shù)的形式如下:WSASt

5、artup((WORD)((1<<8

6、1),(LPWSADATA)&WSAData),其中(1<<8

7、1)表示我們用的是WinSocket1.1版本,WSAata用來(lái)存儲(chǔ)系統(tǒng)傳回的關(guān)于WinSocket的資料?! ?、建立Socket  初始化WinSock的動(dòng)態(tài)連接庫(kù)后,需要在服務(wù)器端建立一個(gè)監(jiān)聽(tīng)的Socket,為此可以調(diào)用Socket()函數(shù)用來(lái)建立這個(gè)監(jiān)聽(tīng)的Socket,并定義此Socket所使用的通信協(xié)議。此函數(shù)調(diào)用成功返回Socket對(duì)象,失敗則返回INVALID_SOCKET(調(diào)用WSAGetLastError()可得知原因,所有WinSocket的API函數(shù)

8、都可以使用這個(gè)函數(shù)來(lái)獲取失敗的原因)?! OCKETPASCALFARsocket(intaf,inttype,intprotocol)  參數(shù):af:目前只提供PF_INET(AF_INET);     type:Socket的類(lèi)型(SOCK_STREAM、SOCK_DGRAM);     protocol:通訊協(xié)定(如果使用者不指定則設(shè)為0);  如果要建立的是遵從TCP/IP協(xié)議的socket,第二個(gè)參數(shù)type應(yīng)為SOCK_STREAM,如為UDP(數(shù)據(jù)報(bào))的socket,應(yīng)為SOCK_DGRAM。  3、綁定端口  接下來(lái)要為服務(wù)器端定義的這個(gè)監(jiān)聽(tīng)的Socke

9、t指定一個(gè)地址及端口(Port),這樣客戶端才知道待會(huì)要連接哪一個(gè)地址的哪個(gè)端口,為此我們要調(diào)用bind()函數(shù),該函數(shù)調(diào)用成功返回0,否則返回SOCKET_ERROR?! ntPASCALFARbind(SOCKETs,conststructsockaddrFAR*name,intnamelen);  參數(shù):s:Socket對(duì)象名;      name:Socket的地址值,這個(gè)地址必須是執(zhí)行這個(gè)程式所在機(jī)器的IP地址;      namelen:name的長(zhǎng)度;  如果使用者不在意地址或端口的值,那么可以設(shè)定地址為INA

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

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

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(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)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。