網路程式設計第一章總結(下)
1.3、基於windows平臺的實現
1.3.1、配置環境
在使用windows進行socket網路程式設計之前,需要先配置所需要的ws2_32.lib。
配置:屬性 -> 配置屬性 -> 輸入 -> 附加依賴項中新增ws2_32.lib
1.3.2、Winsock初始化
在Winsock程式設計時,首先需要呼叫WASAtartup函式來設定Winsock版本,並初始化相應的庫。
int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);
wVersopmRequested:指需要用到的Winsock版本資訊。lpWSAData:WSADATA結構體變數的地址值。WODR是typedef宣告定義的unsigned short型別(若版本為1.2,則1表示主版本號,2表示副版本號,應傳遞0x0201,使用2.2版本應傳遞0x0202)
exam:
int main(void)
{
WSADATA wsaData;
if(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
ErrorHandling("WSAStartup() error!");
return 0;
}
1.3.3、登出Winsock
int WSACleanup(void);
成功返回0,失敗則返回SOCKET_ERROR。一般在程式結束之前呼叫。
1.4、基於windows的套接字相關函式
1.4.1、建立套接字
SOCKET socket(int af, int type, int protocal);
成功返回套接字控制程式碼,失敗則返回INVALID_SOCKET。
1.4.2、繫結套接字
bind函式在windows和linux中相同
int bind(SOCKET s, const struct sockaddr * name, int namelen);
成功返回0,失敗則返回SOCKET_ERROR。
1.4.3、監聽套接字
listen函式在windows和linux中相同。
int listen(SOCKET s, int backlog);
成功返回0,失敗返回SOCKET_ERROR。
1.4.4、接受請求
accept在windows和linux中相同。
SOCKET accept(SOCKET s, struct sockaddr * addr, int * addrlen);
成功返回控制程式碼,失敗返回INVALID_SOCKET。
1.4.5、傳送連線請求
connect在windows和linux下相同。
int connect(SOCKET s, const struct sockaddr * name, int namelen);
成功返回0,失敗返回SOCKET_ERROR。
1.4.6 關閉socket
在windows下需要自己關閉socket連線,需要用到closesocket函式。
int closesocket(SOCKET s);
成功返回0,失敗返回SOCKET_ERROR。
1.5、windows下資料傳輸
linux中將套接字也當作檔案,所以無論是建立檔案還是套接字都是返回檔案描述符。而在windows中則需要區分檔案控制程式碼和socket控制程式碼。由於linux中套接字也是檔案,所以可以直接通過檔案I/O函式read和write來進行資料傳輸,而windows中則不同,windows中嚴格區分檔案I/O和套接字I/O。所以windows進行資料傳輸需要用到send和recv函式。
1.5.1、資料傳輸函式
使用send函式進行資料的傳輸。
int send(SOCKET s, const char *buf, int len, int flags);
成功返回傳輸字計數,失敗返回SOCKET_ERROR。
s:控制程式碼;buf:保持待傳輸資料的緩衝地址值;len:要傳輸的位元組數;flags:傳輸資料時用到的多種選項資訊。
1.5.2 接收資料
使用recv函式接受資料。
int recv(SOCKET s, const char * buf, int len, int flags);
成功返回接收的位元組數,如果到eof返回0,失敗返回SOCKET_ERROR。
s:套接字;buf:資料緩衝;len:最大位元組數;flags:接受多種選項資訊。
相關文章
- App網路相關設計總結APP
- 計算機網路總結(網路層)計算機網路
- 【程式設計素質】程式設計思想總結程式設計
- 程式設計感悟總結一程式設計
- Nio程式設計模型總結程式設計模型
- 《程式設計實踐》第一章編碼風格的不完全總結程式設計
- 計算機程式設計心得總結計算機程式設計
- 計算機網路實驗總結計算機網路
- 網頁設計的技巧總結網頁
- PROG2007程式設計總結程式設計
- Javascript非同步程式設計總結JavaScript非同步程式設計
- MR核心程式設計思想總結程式設計
- 網路通訊程式設計程式設計
- py網路工具程式設計程式設計
- 好程式設計師大資料學習路線Hbase總結程式設計師大資料
- Python網路程式設計(基礎總結入門經典)Python程式設計
- python 網路篇(網路程式設計)Python程式設計
- 計算機網路知識點總結計算機網路
- 網路流總結
- 程式設計師的 2021 年總結程式設計師
- 一個老程式設計師在網際網路寒冬下的感悟程式設計師
- 計算機網路 第一章 1.1.1 計算機網路的概念計算機網路
- 第一章 計算機網路概述計算機網路
- 乾貨:計算機網路知識總結計算機網路
- java程式設計思想第一章Java程式設計
- JAVA的基本程式設計結構(下)Java程式設計
- Java程式設計基礎29——JavaSE總結Java程式設計
- Flutter 中的非同步程式設計總結Flutter非同步程式設計
- C 語言程式設計習慣總結程式設計
- 程式設計師修煉之道總結1程式設計師
- 程式設計師修煉之道總結3程式設計師
- 響應式程式設計機制總結程式設計
- Java 併發程式設計學習總結Java程式設計
- 一個程式設計師的2021總結程式設計師
- 【Javascript】DOM程式設計學習總結篇JavaScript程式設計
- 20240701總結(網路流)
- 網路程式設計-計算機網路三要素程式設計計算機網路
- 第一章:計算機網路和因特網計算機網路