2024年3月11日发(作者:)

C语言getsockopt()函数:取得socket 状态

相关函数:setsockopt

头文件:#include #include

定义函数:int getsockopt(int s, int level, int optname, void* optval, socklen_t*

optlen);

函数说明:getsockopt()会将参数s 所指定的socket 状态返回. 参数optname 代

表欲取得何种选项状态, 而参数optval 则指向欲保存结果的内存地址, 参数optlen 则为

该空间的大小. 参数level、optname 请参考setsockopt().

返回值:成功则返回0, 若有错误则返回-1, 错误原因存于errno

错误代码:

1、EBADF 参数s 并非合法的socket 处理代码

2、ENOTSOCK 参数s 为一文件描述词, 非socket

3、ENOPROTOOPT 参数optname 指定的选项不正确

4、EFAULT 参数optval 指针指向无法存取的内存空间

范例

#include

#include

main()

{

int s;

int optval;

int optlen = sizeof(int);

if((s = socket(AF_INET, SOCK_STREAM, 0)) < 0)

perror("socket");

getsockopt(s, SOL_SOCKET, SO_TYPE, &optval, &optlen);

printf("optval = %dn", optval);

close(s);

}