Inc*_*bus 1 c++ sockets networking bind winsock
当我尝试绑定我的套接字时,我需要在addrinfo/sockaddr-structure中指定地址系列,我将其传递给对bind()的调用,否则将获得winsock错误10047(协议族不支持的地址族).
如果我创建了一个不知道其地址族的套接字怎么办...怎样才能得到该套接字的地址族,所以我可以绑定它?
getsockname仅适用于绑定套接字:/ ...
我不想强迫我的函数调用者将地址族传递给我的函数,特别是如果她/他/它在创建她/他的套接字时使用AF_UNSPEC/PF_UNSPEC
(例如SOCKET sock = socket(AF_UNSPEC, SOCK_STREAM, IPPROTO_TCP);)
由于我使用Winsock,我确实搜索了MSDN一段时间,并找到了WSADuplicateSocket.
WSAPROTOCOL_INFO proto;
WSADuplicateSocket(Socket, GetCurrentProcessId(), &proto);
SocketAF = proto.iAddressFamily;
Run Code Online (Sandbox Code Playgroud)
适用于Windows机器......