GetAcceptExSockaddrs 重叠io获取IP

    GetAcceptExSockaddrs(
                pBuffer->buff,
                BUFFER_SIZE - 2*(sizeof(sockaddr_in) + 16),
                sizeof(sockaddr_in) + 16,
                sizeof(sockaddr_in) + 16,
                (SOCKADDR**)&pladdr,
                &llen,

                (SOCKADDR**)&praddr,

               &rlen);

pladdr和praddr总是为NULL。后来发现sockaddr的内容已经在buff里面了,只是这个函数没有返回,所以,只要:

if ( praddr == NULL )
            {
                pbSockAddr = (PBYTE)pBuffer->buff + (BUFFER_SIZE - 2*(sizeof(sockaddr_in) + 16)) + 10;
                pladdr = (SOCKADDR_IN*)pbSockAddr;
                memcpy( &laddr, pladdr, sizeof(sockaddr_in));

                pbSockAddr = pbSockAddr + sizeof(sockaddr_in) + 10 + 2;
                praddr = (sockaddr_in*)pbSockAddr;
                memcpy( &raddr, praddr, sizeof(sockaddr_in));
            }

这样就能获取ip地址了

你可能感兴趣的:(IO,null,buffer)