日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

WINSOCK网络函数

發布時間:2025/7/14 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WINSOCK网络函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 頭文件及庫文件

頭文件:WINSOCK2.H

庫:WS2_32.LIB庫

如果是在WINCE中,不支持SOCK2,所以:

頭文件:WINSOCK.H

庫:WSOCK32.LIB

如果從MSWSOCK.H中使用了擴展API,則需要鏈接MSWSOCK.DLL

2. 初始化Winsock

如果調用一個沒有初始化過winsock庫的相關socket函數,則返回SOCKET_ERROR,另外錯誤信息是:WSANOTINITIALISED;

int WSAStartup(WORD wVersionRequeted, LPWSADATA lpWSAData);

l wVersionRequested:指定加載的winsock庫的版本;

l lpWSAData:指向LPWSADATA結構的指針,填充啟動參數;

3. 錯誤檢測

常見的錯誤返回值時SOCKET_ERROR,該值是-1;

若想獲取具體錯誤信息,通過函數:

int WSAGetLastError(void);

當然,必須在winsock加載之后,才能調用該函數,如果在WSAStartup就出錯,那就沒得辦法了。

4. 創建套接字

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

5. 面向連接的通信

綁定套接字:

int bind(SOCKET s, const struct sockaddr FAR* name, int namelen);

監聽:

int listen(SOCKET s, int backlog);

接受連接:

SOCKET accept(SOCKET s,struct sockaddr FAR* addr, int FAR* addrlen);

連接:

int connect(SOCKET s, const struct sockaddr FAR* name, int namelen);

6. 數據傳輸

數據發送:

int send(SOCKET s, const char FAR* buf, int len, int flags);

接收數據:

int recv(SOCKET s, char FAR* buf, int len, int flags);

7. 中斷連接

為了保證通信方能夠收到應用程序發出的所有數據,對于一個好的應用程序來說,應該通知接收端“不再發送數據”。同樣,通信方也該如此。

int shutdown(SOCKET s, int how);

從容關閉,可以選擇關閉項類型:SD_RECEIVE、SD_SEND、SD_BOTH;

直接關閉套接字:

int closesocket(SOCKET s);

8. 無連接通信

和面向連接不同,不必調用listen和accept,最簡單的方式就是:

int recvfrom(SOCKET s, char FAR* buf, int len, int flags, struct sockaddr FAR* from, int FAR* fromlen);

而客戶端則直接發送數據:

int sendto(SOCKET s, const char FAR* buf, int len, int flags, const struct sockaddr FAR* to, int tolen);

轉載于:https://www.cnblogs.com/davidsguo008/p/3593336.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的WINSOCK网络函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。