windows下socket常用API

來源:互聯網
上載者:User

一.WinSock DLL

1.初始化WinSock DLL

int WSAStartup(

WORD wVersionRequested,              //調用者能使用的Windows Socket支援的最高版本。高位指定副版本,低位指定主要版本號

LPWSADATA lpWSAData                   //指向WSADATA的指標,用於接收Windows Socket的實現細節

);

//該函數在一個進程中初始化WS2_32.dll的使用

2.釋放WinSock DLL資源

int WSACleanup(void);

 

二.通訊端

1.建立通訊端

SOCKET socket(

int af,                                               //地址家族說明

int type,                                          //新通訊端類型說明

int protocol                                     //通訊端使用協議,特定於所表示的地址家族,0表示預設的協議

);

2.從容關閉通訊端

int shutdown(

SOCKET s,                        //通訊端描述符

int how                            //描述不在允許什麼類型操作的標誌

);

3.關閉通訊端

int closesocket(

SOCKET s

);

 

三.伺服器端

1.綁定

int bind(

SOCKET s,                                                          //一個未綁定通訊端的描述符;

const struct sockadd*name,                             //從SOCKADDR結構分配通訊端的地址

int namelen                                                      //name所包含的位元組長度,以位元組計

);

2.監聽

int listen(

SOCKET s,                                    //表示一個已綁定但並未串連的通訊端

int backlog                                   //待覺串連隊列的最大長度

);

listen函數將通訊端置入監聽狀態,等候進入的串連

3.接收

SOCKET accept(

SOCKET s,                                      //一個用listen函數置入監聽狀態的通訊端描述符,accept函數返回的通訊端才是真正建立了串連

struct sockaddr*addr,                   //可選的指標,指向用於接收串連實體的緩衝區

int*addrlen                                   //可選的指標,指向一個包含addr長度的整數

);

//accept函數允許一個通訊端上接受客戶串連

 

 

四.用戶端

1.建立串連

int connect(

SOCKET s,                                                                //標定一個未綁定通訊端的描述符

const struct sockaddr*name,                                   //應與之建立串連的通訊端名稱

int namelen                                                              //名稱的長度

);

//connect函數建立一個到指定通訊端的連結

 

五.資料轉送

1.發送資料

int send(

SOCKET s,                  //標識一個已經建立串連通訊端的描述符

const char*buf,         //包含待傳輸資料的緩衝區

int len,                       //buf中資料的長度

int flags                    //指定調用執行方式的指標 

);

//send函數在一個已建立串連的通訊端上發送資料

2.發送資料到

int sendto(

SOCKET s,                                              //表示一個可能已串連的標示符

const char*buf,                                     

int len,

int flags,

const struct sockaddr*to,                     //可選的指標,指向目標通訊端的地址

int tolen                                 

);

3.接收資料

int recv(

SOCKET s,                    //標識一個已建立串連通訊端的描述符

char*buf,                     

int len,

int flags

);

//resv函數接收從一個已串連或綁定的通訊端上擷取傳來的資料。

4.接收資料來自

int recvfrom(

SOCKET s,

char *buf,          //接收傳來的資料的緩衝區

int len,

int flags,

struct sockaddr*from,                                 //可選的指標,指向一個在返回時儲存源地址的緩衝區

int*fromlen                                                   

);

 

六.通訊端地址資訊

1.擷取對方的通訊端地址資訊

int getpeername(

SOCKET s,

struct sockaddr*name,

int*namelen

);

//getpeername函數擷取與一個通訊端相串連的電腦的名稱

2.擷取本地的通訊端地址資訊

int getsockname(

SOCKET s,                                                                 //標識一個已串連的通訊端的描述符
struct sockaddr FAR* name,                                     //用於擷取本地的通訊端socketaddr結構

int FAR* namlen                                                        //  指向名稱結構尺寸,以位元組計

);

//getsockname函數擷取本地socket名稱

 

七.其他

1.擷取最近的錯誤碼

int WSAGetLastError(void);

相關文章

聯繫我們

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