getsockopt
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的定义正是此值/