利用getsockopt可以获取套接字某属性的属性值, 本文, 我们来窥见一斑。 多的不说, 肚子饿了, 直接上菜:
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
int main()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);
unsigned int serverSocket = socket(AF_INET, SOCK_STREAM, 0);
sockaddr_in server;
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr("0.0.0.0");
server.sin_port = htons(8888);
bind(serverSocket,(SOCKADDR*)&server, sizeof(server));
// SO = socket option = option = opt = 选项 = 属性, 比如SO_ACCEPTCONN表示监听状态的属性值
int optVal = -1;
int optLen = sizeof(int);
getsockopt(serverSocket, SOL_SOCKET, SO_ACCEPTCONN, (char*)&optVal, &optLen);
printf("监听状态: %d\n", optVal); // 0, 未监听
listen( serverSocket, 100 );
getsockopt(serverSocket, SOL_SOCKET, SO_ACCEPTCONN, (char*)&optVal, &optLen);
printf("监听状态: %d\n", optVal); // 1, 已经监听
WSACleanup();
return 0;
}