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地址了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章