基於Winsock API的VC網路編程實戰

來源:互聯網
上載者:User

隨著電腦資訊技術的飛速發展,互連網與人類社會的工作、生活越來越緊密相關,它已 經成為人類擷取、交流資訊的重要途徑和手段。所以當前對於開發人員來說,網路編程已是 必備的技能。本執行個體詳細介紹了如何利用Winsock API編寫網路應用程式。

一、實現 方法

在網路編程中最常用的方案便是Client/Server (客戶機/伺服器)模型。在這種 方案中客戶應用程式向伺服器程式請求服務。一個服務程式通常在一個眾所周知的地址監聽 對服務的請求,也就是說,服務進程一直處於休眠狀態,直到一個客戶向這個服務的地址提 出了串連請求。在這個時刻,服務程式被"驚醒"並且為客戶提供服務-對客戶的 請求作出適當的反應。

為了方便這種Client/Server模型的網路編程,90年代初,由 Microsoft聯合了其他幾家公司共同制定了一套WINDOWS下的網路編程介面,即Windows Sockets規範,它不是一種網路通訊協定,而是一套開放的、支援多種協議的Windows下的網路編程 介面。現在的Winsock已經基本上實現了與協議無關,你可以使用Winsock來調用多種協議的 功能,但較常使用的是TCP/IP協議。Socket實際在電腦中提供了一個通訊連接埠,可以通過 這個連接埠與任何一個具有Socket介面的電腦通訊。應用程式在網路上傳輸,接收的資訊都 通過這個Socket介面來實現。

微軟為Visual C++定義了Winsock類如CAsyncSocket類 和派生於CAsyncSocket 的CSocket類,它們簡單易用,讀者朋友當然可以使用這些類來實現 自己的網路程式,但是為了更好的瞭解Winsock API編程技術,我們這裡探討怎樣使用底層的 API函數實現簡單的 Winsock 網路應用程式設計,分別說明如何在Server端和Client端操作 Socket,實現基於TCP/IP的資料傳送,最後給出相關的原始碼。

在VC中進行WINSOCK 的API編程開發的時候,需要在項目中使用下面的三個檔案,否則會出現編譯錯誤。

1 .WINSOCK.H: 這是WINSOCK API的標頭檔,需要包含在項目中。

2.WSOCK32.LIB: WINSOCK API串連庫檔案。在使用中,一定要把它作為項目的非預設的串連庫包含到專案檔 中去。

3.WINSOCK.DLL: WINSOCK的動態串連庫,位於WINDOWS的安裝目錄下。

伺服器端操作 socket(通訊端)

1.在初始化階段調用WSAStartup()

此函數在應用程式中初始化Windows Sockets DLL ,只有此函數調用成功後,應用程式才可 以再調用其他Windows Sockets DLL中的API函數。在程式中調用該函數的形式如下: WSAStartup((WORD)((1<<8|1),(LPWSADATA)&WSAData),其中(1<<8|1) 表示我們用的是WinSocket1.1版本,WSAata用來儲存系統傳回的關於WinSocket的資料。

2、建立Socket

初始化WinSock的動態串連庫後,需要在伺服器端建立一個監 聽的Socket,為此可以調用Socket()函數用來建立這個監聽的Socket,並定義此Socket所使 用的通訊協定。此函數調用成功返回Socket對象,失敗則返回INVALID_SOCKET(調用 WSAGetLastError()可得知原因,所有WinSocket 的API函數都可以使用這個函數來擷取失敗 的原因)。

SOCKET PASCAL FAR socket( int af, int type, int protocol )

參數: af:目前只提供 PF_INET(AF_INET);

type:Socket 的類型 (SOCK_STREAM、 SOCK_DGRAM);

protocol:通訊協定(如果使用者不指定則設為0);

如果要建 立的是遵從TCP/IP協議的socket,第二個參數type應為SOCK_STREAM,如為UDP(資料報)的 socket,應為SOCK_DGRAM。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.