getsockopt
取得socket状态
相关函数
setsockopt
表头文件
#include<sys/types.h>
#include<sys/socket.h>
定义函数
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
错误代码
EBADF 参数s 并非合法的socket处理代码 ENOTSOCK 参数s为一文件描述词,非socket ENOPROTOOPT 参数optname指定的选项不正确 EFAULT 参数optval指针指向无法存取的内存空间
范例
#include<sys/types.h>
#include<sys/socket.h>
main()
{
int s,optval,optlen = sizeof(int);
if((s = socket(AF_INET,SOCK_STREAM,0))<0) perror(“socket”);
getsockopt(s,SOL_SOCKET,SO_TYPE,&optval,&optlen);
printf(“optval = %d\n”,optval);
close(s);
}
执行
optval = 1 /*SOCK_STREAM的定义正是此值*/