getsockopt() - Unix,Linux系统调用
Tutorials Point


  Unix入门
  Unix Shell编程
  高级Unix
  Unix有用参考
  Unix有用资源
  精选阅读

版权所有 © 2014 tutorialspoint



  首页     参考文献     讨论论坛     关于TP  

getsockopt() - Unix,Linux系统调用


previous next AddThis Social Bookmark Button

广告

名称

getsockopt, setsockopt - 获取和设置套接字选项

摘要

#include <sys/types.h>
#include <sys/socket.h>

int getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen);

int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen);

描述

getsockopt() 和 setsockopt() 操作与套接字关联的选项。选项可能存在于多个协议层;它们始终存在于最顶层的socket层。

操作套接字选项时,必须指定选项所在的层级和选项的名称。要操作套接字层级的选项,level 指定为SOL_SOCKET。要操作任何其他层级的选项,则提供控制该选项的相应协议的协议号。例如,要指示选项应由TCP协议解释,level应设置为TCP的协议号;参见getprotoent(3)。

参数optvaloptlen用于访问setsockopt()的选项值。对于getsockopt(),它们标识一个缓冲区,其中将返回请求的选项值。对于getsockopt(),optlen是一个值-结果参数,最初包含optval指向的缓冲区的大小,并在返回时修改为指示返回的值的实际大小。如果不需要提供或返回选项值,则optval可以为NULL。

Optname和任何指定的选项都将未经解释地传递给相应的协议模块以进行解释。包含文件<sys/socket.h>包含套接字级别选项的定义,如下所述。其他协议级别的选项的格式和名称各不相同;请参阅手册第4节中的相应条目。

大多数套接字级别选项使用int参数作为optval。对于setsockopt(),如果要启用布尔选项,则参数应为非零值;如果要禁用该选项,则应为零。

有关可用套接字选项的说明,请参见socket(7)和相应的协议手册页。

返回值

成功时,返回零。出错时,返回-1,并相应地设置errno

错误

标签描述
EBADF 参数s不是有效的描述符。
EFAULT optval指向的地址不在进程地址空间的有效部分。对于getsockopt(),如果optlen不在进程地址空间的有效部分,也可能返回此错误。
EINVAL setsockopt() 中的optlen无效。
ENOPROTOOPT
 在指示的级别上未知该选项。
ENOTSOCK 参数s是文件,而不是套接字。

符合标准

SVr4, 4.4BSD(这些系统调用首次出现在4.2BSD中),
POSIX.1-2001。

注意

getsockoptsetsockoptoptlen参数实际上是int [*](这就是4.x BSD和libc4以及libc5所具有的)。一些POSIX混淆导致了目前的socklen_t,glibc也使用它。另见accept(2)。

缺陷

一些套接字选项应在较低的系统级别进行处理。

参见



previous next Printer Friendly

广告


  

广告



广告