调用getsockopt和setsocketopt可以查看和设置socket中的一些选项,比如socket是否处于监听状态,是否允许广播,是否允许路由选择等等。
1.getsockopt()
int getsockopt(SOCKET s,int level,int optname, char* optval, int* optlen)
s:要查看的套接字
level:选项的级别,有SOL_SOCKET,IPPROTO_TCP等
optname是要查看的选项的名称
optval接受查看选项的结果
optlen optval的长度
比如以下例子,在listen监听之前分别查看套接字的监听情况(optname=SO_ACCEPTCONN)
// test.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include "winsock2.h"
#include <stdlib.h>
#pragma comment(lib,"ws2_32.lib")
int main()
{
WSADATA wsa;
if (WSAStartup(MAKEWORD(2, 2), &wsa) != NO_ERROR)
{
printf("startup failed\n");
}
SOCKET listensocket;
sockaddr_in server;
int retval, optlen;
if ((listensocket = soc