歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux管理 >> Linux網絡 >> Linux網絡編程--8.套接字選項

Linux網絡編程--8.套接字選項

日期:2017/2/27 14:16:49   编辑:Linux網絡
  有時候我們要控制套接字的行為(如修改緩沖區的大小),這個時候我們就要控制套接字的選項了.     8.1 getsockopt和setsockopt     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指定控制套接字的層次.可以取三種值: 1)SOL_SOCKET:通用套接字選項. 2)IPPROTO_IP:IP選項. 3)IPPROTO_TCP:TCP選項.   optname指定控制的方式(選項的名稱),我們下面詳細解釋     optval獲得或者是設置套接字選項.根據選項名稱的數據類型進行轉換     選項名稱 說明 數據類型   ========================================================================   SOL_SOCKET   ------------------------------------------------------------------------   SO_BROADCAST 允許發送廣播數據 int   SO_DEBUG 允許調試 int   SO_DONTROUTE 不查找路由 int   SO_ERROR 獲得套接字錯誤 int   SO_KEEPALIVE 保持連接 int   SO_LINGER 延遲關閉連接 strUCt linger   SO_OOBINLINE 帶外數據放入正常數據流 int   SO_RCVBUF 接收緩沖區大小 int   SO_SNDBUF 發送緩沖區大小 int   SO_RCVLOWAT 接收緩沖區下限 int   SO_SNDLOWAT 發送緩沖區下限 int   SO_RCVTIMEO 接收超時 struct timeval   SO_SNDTIMEO 發送超時 struct timeval   SO_REUSERADDR 允許重用本地地址和端口 int   SO_TYPE 獲得套接字類型 int   SO_BSDCOMPAT 與BSD系統兼容 int   ==========================================================================   IPPROTO_IP   --------------------------------------------------------------------------   IP_HDRINCL 在數據包中包含IP首部 int   IP_OPTINOS IP首部選項 int   IP_TOS 服務類型   IP_TTL 生存時間 int   ==========================================================================   IPPRO_TCP   --------------------------------------------------------------------------   TCP_MAXSEG TCP最大數據段的大小 int   TCP_NODELAY 不使用Nagle算法 int   =========================================================================     關於這些選項的詳細情況請查看 Linux Programmer's Manual     8.2 ioctl   ioctl可以控制所有的文件描述符的情況,這裡介紹一下控制套接字的選項.     int ioctl(int fd,int req,...)     ==========================================================================   ioctl的控制選項   --------------------------------------------------------------------------   SIOCATMARK 是否到達帶外標記 int   FIOASYNC 異步輸入/輸出標志 int   FIONREAD 緩沖區可讀的字節數 int   ==========================================================================     詳細的選項請用 man ioctl_list 查看.


[1]



Copyright © Linux教程網 All Rights Reserved