GetAcceptExSockaddrs(
pBuffer->buff,
BUFFER_SIZE - 2*(sizeof(sockaddr_in) + 16),
sizeof(sockaddr_in) + 16,
sizeof(sockaddr_in) + 16,
(SOCKADDR**)&pladdr,
&llen,
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地址了