LINUX網路程式設計學習指導(一)

2021-10-21 02:00:51 字數 1892 閱讀 6504

1.socket,建立套接字。

#include /* see notes */

#include int socket(int domain, int type, int protocol);

引數一: 我們大部分是在ipv4的環境,所以我們將第一1個承引數配置為af_inet 。

引數二:我們這裡選擇tcp協議進行資料傳輸,所以配置引數為sock_stream,

引數三:就配置為0即可。

2.bind函式,為套接字新增資訊,比如我們新增的ip位址和埠號。

int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
引數一:就是建立套接字的識別符號。

引數二:通過查詢函式原型我們看到系統上面顯示的是:

struct sockaddr 

//我們用下面這個來代替

struct sockaddr_in ;

3.listen,監聽函式,用來監聽網路連線。

int listen(int sockfd, int backlog);
引數一:就是套接字返回的識別符號。

引數二:backlog引數定義了sockfd的掛起連線佇列可能增長到的最大長度。如果連線請求在佇列滿時到達,客戶端可能會收到乙個指示錯誤,或者,如果底層協議支援重傳,則可能會忽略該請求,以便以後重新嘗試連線時獲得成功,這裡我們配置為10。

4.accept函式接受客戶端連線,連線成功會返回客戶端的套接字的標識通道,這個新的套接字和socket函式建立的套接字不是乙個概念,我們的伺服器和客戶端需要通過這個新的套接字進行通訊。

int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
引數一:套接字識別符號也就是listen函式中設定為監聽狀態的套接字。

引數二:是用來儲存客戶端套接字對應的記憶體空間變數包括客戶端ip和埠資訊等,可以參照我上面給出的結構體來檢視。

引數三:引數二記憶體空間的占地大小。

api函式的講解就到這裡了。下面開始寫**。

//sever

#include#include//#include//會與下面的檔案起衝突

#include#include#include#include#include#includeint main()

c_in.sin_family = af_inet;

c_in.sin_port = htons(8989);//轉化為網路能識別的位元組序

inet_aton("127.0.0.1",&c_in.sin_addr);//同上

int size = sizeof(struct sockaddr_in);

bind(s_fd,(struct sockaddr *)&c_in,size);

listen(s_fd,10);

int len = sizeof(struct sockaddr );

int c_fd = accept(s_fd,(struct sockaddr*)&client_in,&len);

if(c_fd!=-1)

else

write(c_fd,str,sizeof(str));

n_read = read(c_fd,buff,128);

if(n_read==-1)

else

return 0;

windows 程式設計 學習指導

這裡有乙份很好的資源,被製作成chm檔案的 windows 程式設計 包含了中文版和英文版,還有全書源 雖然不知道是誰出版的,但是感覺對windows程式設計新手來說還是很不錯的。關鍵還是 免費 內容 windows程式設計 中文版 英文版 全書源 截圖 另外,官網 msdn 的技術文件也是不錯的參...

linux網路程式設計學習

終於抽時間學習了linux的網路程式設計,以前只是對socket有個字面上的了解,具體的機制和用法一無所知。正好專案要用,學習下,做個筆記。在linux上,任何都可以當做檔案來對待。獲得乙個檔案描述符,就可以對它進行讀寫操作。socket也是一樣。socket在linux下被翻譯成套接字,我覺得這個...

Linux網路程式設計學習 TCP IP基礎 一

總結鏈結位址 為了把全世界所有不同型別的計算機都連線起來,就必須規定一套全球通用的協議,為了實現網際網路這個目標,網際網路協議族 internet protocol suite 就是通用協議標準。internet是由inter和net兩個單詞組合起來的,願意就是連線 網路 的網路,有了interne...