[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 編程技術 > 網絡編程 > 正文
Linux網絡編程--8. 套接字選項
http://linuxc.51.net 作者:hoyt (2001-05-08 11:23:24)


有時候我們要控制套接字的行為(如修改緩沖區的大小),這個時候我們就要控制套接字的選項了. 


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 查看. 
(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
Proxy源代碼分析--談談如何學習linux網絡編程 (2001-08-10 12:00:00)
Linux網絡編程--10. 原始套接字 --11. 記 (2001-05-08 11:26:09)
Linux網絡編程--9. 服務器模型 (2001-05-08 11:23:59)
Linux網絡編程--8. 套接字選項 (2001-05-08 11:23:24)
Linux網絡編程--7. TCP/IP協議 (2001-05-08 11:22:40)
Linux網絡編程--6. 高級套接字函數 (2001-05-08 11:22:09)
Linux網絡編程--5. 用戶數據報發送 (2001-05-08 11:21:31)
Linux網絡編程--4. 完整的讀寫函數 (2001-05-08 11:20:52)
Linux網絡編程--3. 服務器和客戶機的信息函數 (2001-05-08 11:20:14)
Linux網絡編程--2. 初等網絡函數介紹(TCP) (2001-05-08 11:19:34)

===更多相關===
 

★  樊強制作 歡迎分享  ★