Windows Socket API使用經驗

來源:互聯網
上載者:User

本文是我在進行MS-Windows、HP-Unix網路編程的實踐過程中總結出來的一些經驗,僅供大家參考。本文所談到的Socket函數如果沒有特別說明,都是指的Windows Socket API。

一、WSAStartup函數

int WSAStartup(
    WORD wVersionRequested, 
    LPWSADATA lpWSAData 
   );

使用Socket的程式在使用Socket之前必須調用WSAStartup函數。該函數的第一個參數指明程式請求使用的Socket版本,其中高位位元組指明副版本、低位位元組指明主要版本;作業系統利用第二個參數返回請求的Socket的版本資訊。當一個應用程式調用WSAStartup函數時,作業系統根據請求的Socket版本來搜尋相應的Socket庫,然後綁定找到的Socket庫到該應用程式中。以後應用程式就可以調用所請求的Socket庫中的其它Socket函數了。該函數執行成功後返回0。

例:假如一個程式要使用2.1版本的Socket,那麼程式碼如下

wVersionRequested = MAKEWORD( 2, 1 );

err = WSAStartup( wVersionRequested, &wsaData );

二、WSACleanup函數

int WSACleanup (void);

應用程式在完成對請求的Socket庫的使用後,要調用WSACleanup函數來解除與Socket庫的綁定並且釋放Socket庫所佔用的系統資源。

三、socket函數

SOCKET socket(
    int af,    
    int type,   
    int protocol 
   );

應用程式調用socket函數來建立一個能夠進行網路通訊的通訊端。第一個參數指定應用程式使用的通訊協定的協議族,對於TCP/IP協議族,該參數置PF_INET;第二個參數指定要建立的通訊端類型,流通訊端類型為SOCK_STREAM、資料通訊端類型為SOCK_DGRAM;第三個參數指定應用程式所使用的通訊協定。該函數如果調用成功就返回新建立的通訊端的描述符,如果失敗就返回INVALID_SOCKET。通訊端描述符是一個整數類型的值。每個進程的進程空間裡都有一個通訊端描述符表,該表中存放著通訊端描述符和通訊端資料結構的對應關係。該表中有一個欄位存放新建立的通訊端的描述符,另一個欄位存放通訊端資料結構的地址,因此根據通訊端描述符就可以找到其對應的通訊端資料結構。每個進程在自己的進程空間裡都有一個通訊端描述符表但是通訊端資料結構都是在作業系統的核心緩衝裡。下面是一個建立流通訊端的例子:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.