处于IPV6和IPV4兼容开发的时,兼容原来的设计,只有一个socket变量,怎么样获取到socket的信息呢。
今天和大家分享一下来获取协议族(其它信息也可以获取,我目前需要的是这个)
int getsockopt( SOCKET s, int level, int optname, char *optval, int *optlen );
这个函数的描述网上有很多,也可以看官网资料,我分享一下level和optname取值怎么查文档。
可以参照文档Socket Options,这一页比较集中。
分享一个简短的获取本地IP地址的函数
#include <WinSock2.h>
#include <ws2tcpip.h>
char* getLocalIPFromSocket(long lSocketFd)
{
char localIP[MAX_PATH] = {0};
WSAPROTOCOL_INFO szProtocolInfo;
int szProtocolInfoSize = sizeof(szProtocolInfo);
memset(&szProtocolInfo, 0x00, szProtocolInfoSize);
getsockopt(lSocketFd, SOL_SOCKET, SO_PROTOCOL_INFO, (char*)&szProtocolInfo, &szProtocolInfoSize);
switch(szProtocolInfo.iAddressFamily)