Удаленный IP на ISA сервере.
От: Kain Merg Россия  
Дата: 25.05.11 09:50
Оценка:
Всем доброго дня!

Есть 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, подскажите в чем дело?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.