一、設定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...