Всем доброго дня!
Есть Application Filter для ISA сервера. Крайне необходимо получить IP удаленного сервера с которым произошло соединение. Если смотреть в SDK, то привденная ниже функция должна работать:
std::string getServerIP()
{
m_pCOMWrapper->Lock();
CComPtr< IFWXConnection > spConnection = m_spConnection;
m_pCOMWrapper->Unlock();
sockaddr_in exSocket = { 0 };
int exSockLen = sizeof( exSocket );
if( SUCCEEDED( spConnection->GetExternalPeerName( reinterpret_cast< LPSOCKADDR >( &exSocket ), &exSockLen ) )
{
std::stringstream s;
s << static_cast< int >( exSocket.sin_addr.S_un.S_un_b.s_b1 ) << "."
<< static_cast< int >( exSocket.sin_addr.S_un.S_un_b.s_b2 ) << "."
<< static_cast< int >( exSocket.sin_addr.S_un.S_un_b.s_b3 ) << "."
<< static_cast< int >( exSocket.sin_addr.S_un.S_un_b.s_b4 );
return s.str();
}
else
{
return "unknown server IP address";
}
}
Но, к сожалению, GetExternalPeerName всегда возвращает E_FAIL, подскажите в чем дело?