Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Linux系統教程 >> Linux教程 >> Linux網絡編程--套接字選項

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

日期:2017/2/7 9:20:05      編輯:Linux教程

電腦店訊 

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

2 ioctl
ioctl可以控制所有的文件描述符的情況,這裡介紹一下控制套接字的選項.

int ioctl(int fd,int req,...)

==========================================================================
                        ioctl的控制選項
--------------------------------------------------------------------------
SIOCATMARK              是否到達帶外標記                        int
FIOASYNC                異步輸入/輸出標志                       int
FIONREAD                緩沖區可讀的字節數                      int
==========================================================================
詳細的選項請用man ioctl_list 查看. 

Copyright © Windows教程網 All Rights Reserved