linux網路程式設計相關

2021-09-26 09:49:56 字數 1337 閱讀 6785

一、設定socket收發超時時間

struct timeval timeout=;//3s

int ret=setsockopt(sock_fd,sol_socket,so_sndtimeo,(constchar*)&timeout,sizeof(timeout));

int ret=setsockopt(sock_fd,sol_socket,so_rcvtimeo,(const char*)&timeout,sizeof(timeout));

1、struct timeval在time.h中定義為:

struct timeval

;

二、獲取和設定socket收發的快取大小

// 設定接收緩衝區大小

int nrecvbuflen = 32 * 1024; //設定為32k

setsockopt( sockfd, sol_socket, so_rcvbuf, ( const char* )&nrecvbuflen, sizeof( int ) );

//設定傳送緩衝區大小

int nsendbuflen = 32*1024; //設定為32k

setsockopt( sockfd, sol_socket, so_sndbuf, ( const char* )&nsendbuflen, sizeof( int ) );

//獲取接收緩衝區大小

int opt_val;

socklen_t opt_len = sizeof(opt_val);

getsockopt(sockfd, sol_socket, so_rcvbuf, &opt_val, &opt_len) ;

//獲取傳送緩衝區大小

int opt_val;

socklen_t opt_len = sizeof(opt_val);

getsockopt(sockfd, sol_socket, so_sndbuf, &opt_val, &opt_len) ;

//可以檢視:/proc/sys/net/ipv4/tcp_rmem (讀)/proc/sys/net/ipv4/tcp_wmem (寫)

//其中包含三個數字,分別是最小值,預設值和最大記憶體大小值(以位元組為單位)

三、在tcp通訊時

1、在接收資料後**給別的模組去處理時,可以不用知道協議,收到一次就**一次,而且是要保持此次連線直到對方關閉連線,目前直到判斷對方取斷開接的方法是通過recv函式的返回值,=0,對方斷開連線;<0,接收出錯;>0收到資料。

2、當接收後需要自己處理時,必須知道協議,通常的做法是接收協議頭,從頭裡知道需要接收的資料長度。

Linux網路程式設計相關操作

一 linux網路程式設計基礎知識 tcp udp對比埠號的作用 一台擁有ip位址的主機可以提供許多服務,比如web服務 ftp服務 smtp服務等,這些服務完全可以通過乙個ip位址來實現。那麼主機是怎麼樣區分不同的網路服務呢?顯然不能只靠ip位址,因為ip位址與網路服務的關係是一對多的關係。實際上...

網路程式設計相關

http協議中get和post有什麼區別,cookie 和 essions有什麼不同和聯絡?音未公司 get是從伺服器上獲取資料,post是向伺服器傳送資料 get相對於post的話不安全,傳輸的資料一般明文顯示在 中,post一般使用者表單的提交,資料通過 l加密傳輸 get傳送的資料有限制,不能...

Linux網路相關

功能 語法啟動網絡卡 ifup 網絡卡名 關閉網絡卡 ifdown 網絡卡名 重啟單個網絡卡 ifdown ens33 ifup ens33 檢視網絡卡是否連線 mii tool 網絡卡名 檢視主機名 hostname 更改主機名 重新登入即可永久生效 hostnamectl set hostnam...