处于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)
{
case AF_INET:
{
struct sockaddr_in sa;
int len = sizeof(

在IPv6和IPv4兼容开发中,如何获取socket的协议族信息?本文介绍使用getsockopt函数来获取,特别是通过设置不同level和optname参数来查询。推荐查阅Socket Options文档以找到更多选项,同时提供了一个获取本地IP地址的简短示例。
最低0.47元/天 解锁文章
1224

被折叠的 条评论
为什么被折叠?



