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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

UNIX网络编程——套接字选项(SO_RCVBUF和SO_SNDBUF)

發(fā)布時(shí)間:2023/11/30 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UNIX网络编程——套接字选项(SO_RCVBUF和SO_SNDBUF) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ?有時(shí)候我們需要控制套接字的行為(如修改緩沖區(qū)的大小),這個(gè)時(shí)候我們就要學(xué)習(xí)套接字選項(xiàng)。

int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen) int setsockopt(int sockfd,int level,int optname,const void *optval,socklen_t *optlen)

level指定控制套接字的層次.可以取三種值:

  • SOL_SOCKET:通用套接字選項(xiàng).?
  • IPPROTO_IP:IP選項(xiàng).?
  • IPPROTO_TCP:TCP選項(xiàng).?

? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? ?


optname指定控制的方式(選項(xiàng)的名稱)

optval獲得或者是設(shè)置套接字選項(xiàng).根據(jù)選項(xiàng)名稱的數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換
??


返回值說(shuō)明:

成功執(zhí)行時(shí),返回0。失敗返回-1,errno被設(shè)為以下的某個(gè)值 ?
EBADF:sock不是有效的文件描述詞
EFAULT:optval指向的內(nèi)存并非有效的進(jìn)程空間
EINVAL:在調(diào)用setsockopt()時(shí),optlen無(wú)效
ENOPROTOOPT:指定的協(xié)議層不能識(shí)別選項(xiàng)
ENOTSOCK:sock描述的不是套接字


數(shù)據(jù)結(jié)構(gòu)說(shuō)明:

1)結(jié)構(gòu):linger,它的聲明如下:

struct linger{int l_onoff; //狀態(tài)int l_linger; //等待時(shí)間 };2)結(jié)構(gòu):timeval,它的聲明如下:

struct timeval{time_t tv_sec; //秒suseconds_t tv_usec; //微秒:百萬(wàn)分之一秒 };

舉例說(shuō)明:

? ? ?SO_RCVBUF和SO_SNDBUF每個(gè)套接口都有一個(gè)發(fā)送緩沖區(qū)和一個(gè)接收緩沖區(qū),使用這兩個(gè)套接口選項(xiàng)可以改變?nèi)笔【彌_區(qū)大小。

// 接收緩沖區(qū) int nRecvBuf=32*1024; //設(shè)置為32K setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int)); //發(fā)送緩沖區(qū) int nSendBuf=32*1024;//設(shè)置為32K setsockopt(s,SOL_SOCKET,SO_SNDBUF,(const char*)&nSendBuf,sizeof(int));
注意:
? ? ?當(dāng)設(shè)置TCP套接口接收緩沖區(qū)的大小時(shí),函數(shù)調(diào)用順序是很重要的,因?yàn)門CP的窗口規(guī)模選項(xiàng)是在建立連接時(shí)用SYN與對(duì)方互換得到的。對(duì)于客戶,SO_RCVBUF選項(xiàng)必須在connect之前設(shè)置;對(duì)于服務(wù)器,SO_RCVBUF選項(xiàng)必須在listen前設(shè)置。

轉(zhuǎn)載于:https://www.cnblogs.com/wangfengju/p/6172581.html

總結(jié)

以上是生活随笔為你收集整理的UNIX网络编程——套接字选项(SO_RCVBUF和SO_SNDBUF)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。