分类: LINUX
2008-08-13 12:42:44
|
字节操纵函数
|
IPv4地址转换函数
|
IPv4、IPv6 通用地址转换函数
|
TCP套接口函数
|
获得与套接口关联的协议地址
|
|
|
套接口选项函数
级别 |
选项名 |
get |
set |
说明 |
标志 |
数据类型 |
SOL_SOCKET | SO_BROADCAST | * | * | 开启或禁止进程发送广播消息的能力,只适用于UDP套接口,如果目的地址为一个广播地址且本套接口选项没有设置,则返回EACCES错误 | * | int |
SO_DEBUG | * | * | 只适用于TCP套接口,对套接口发送和接受的报文保留详细跟踪信息,可使用trpt程序进行查看 | * | int | |
SO_DONTROUTE | * | * | 对发出的报文不查询路由表,直接通过目的地址的网络地址确定本地接口后发送,如果无法由目的地址确定(即不在一个点到点链路或共享网络),则返回ENETUNREACH错误 | * | int | |
SO_ERROR | * | 当socket发生错误时,可以同访问SO_ERROR套接口选项获取该错误值(保存在so_error中),读取后so_error被复位为0,该错误被称为待处理错误(pending error) | int | |||
SO_KEEPALIVE | * | * | 适用于TCP套接口,启用或禁止2小时内未收到任一方向上的数据则发送保活探测报文 | * | int | |
SO_LINGER | * | * |
指定close函数对面向连接协议(如TCP和SCTP)如何操作,缺省操作是close函数立即返回,如果发送缓冲区有数据,则尝试发送给对端。SO_LINGER选项可以改变此设置。 如果l_onoff为0,使用缺省设置。 如果l_onoff为非0且l_linger为0,则丢弃发送缓冲区中的数据并发送一个RST给对端,没有通常的四次握手终止连接 如果l_onoff为非0且l_linger为非0,则当套接口关闭时内核将拖延一段时间,如果发送缓冲区有数据,进程将被阻塞,知道所有数据发送玩且均被对方确认或延滞时间到。如果套接口为非阻塞型,那么它将不等待close完成,即使l_linger为非0。 |
sturct linger { int l_onoff; int l_linger; } | ||
SO_OOBINLINE | * | * | 开启时,带外数据将被留在正常的输入队列中。这种情况下接收函数的MSG_OOB标志不能用来读带外数据。 | * | int | |
SO_RCVBUF | * | * | 改变接收缓冲区的缺省大小,对于TCP客户端的接受缓冲区大小必须在调用connect之前设置;对于TCP服务器端必须在调用listen之前给套接口设置,新建的已连接套接口从监听套接口继承缓冲区大小。TCP缓冲区大小至少应是相应连接的MSS值的四倍,且为MSS值的偶数倍。 | int | ||
SO_SNDBUF | * | * | 改变发送缓冲区的缺省大小,同上 | int | ||
SO_RCVLOWAT | * | * | 改变接收低潮标记,即select返回套接口接收缓冲区可读所需的数据量,对于TCP、UDP、SCTP套接口,缺省为1 | int | ||
SO_SNDLOWAT | * | * | 改变发送低潮标记,即select返回套接口发送缓冲区可写所需的可用空间 | int | ||
SO_RCVTIMEO | * | * | 改变套接口接收的超时值,时间为0代表不超时 | struct timeval | ||
SO_SNDTIMEO | * | * | 改变套接口发送的超时值,时间为0代表不超时 | struct timeval | ||
SO_REUSEADDR | * | * | 允许启动一个监听服务器并捆绑众所周知端口,即使以前在此端口上建立的连接仍存在;允许完全重复的捆绑:即当一个IP地址和端口已绑定到某个套接口上时,如果传输协议支持,同样的IP和端口还可以捆绑到另一个套接口上,一般来说仅支持UDP套接口。 | * | int | |
SO_REUSEPORT | * | * | 允许完全重复的捆绑(如上详述),不过只有在想要捆绑同一IP地址和端口的每一个套接口都启用本选项才行;如果被捆绑的IP地址是一个多播地址,那么SO_REUSEADDR和SO_REUSEPORT被认为等效 | * | int | |
SO_TYPE | * | 获得套接口的类型,如SOCK_STREAM或SOCK_DGRAM | int | |||
SO_USELOOPBACK | * | * | 只适用于路由域套接口,开启时,相应套接口将接收在其上发送的任何数据报的一份拷贝 | * | int | |
|
套接字控制操作
控制操作 命令 参数 返回
设置套接口为非阻塞I/O型
F_SETFL
O_NONBLOCK
成功 - 0,失败 - -1
设置套接口为信号驱动I/O型
F_SETFL
O_ASYNC
获得套接口文件标志
F_GETFL
0
成功 - 文件标志,失败 - -1
设置套接口拥有者,用于接收SIGIO和SIGURG信号
F_SETOWN
进程ID或进程组ID
成功 - 0,失败 - -1
获得套接口拥有者
F_GETOWN
0
成功 - 进程ID或进程组ID,失败 - -1
|
|