none
Ip de conexão feita com o Connection Manager RRS feed

  • Pergunta

  • Olá, pessoal!
    Estou usando o Connection Manager para estabelecer conexões à internet ou mesmo uma rede privada.
    O problema, é que eu preciso saber o IP que o dispositivo recebeu para essa conexão.
    Não consegui uma forma confiável de obter o IP que foi recebido para uma determinada rede.
    Atraves da função ConnMgrQueryDetailedStatus eu consigo ver todas os Adapters com seus respectivos IPs, mas não encontrei uma forma de relacionar esses dados com a conexão que acabei de estabelecer.
    Para estabelecer a conexão, estou usando a função ConnMgrEstablishConnectionSync.

    Alguém já precisou de algo parecido ou sabe como posso proceder para descobrir o IP da conexão que foi estabelecida?

    Desde já agradeço!
    sexta-feira, 31 de outubro de 2008 16:20

Todas as Respostas

  • Rhobison,

     

    Veja se este exemplo te ajuda:

    http://www.codeproject.com/KB/cs/network.aspx

     

    []s,

     

    sexta-feira, 31 de outubro de 2008 17:16
  • Carlos, valeu demais pela resposta, mas esse exemplo lista todos os IPs dos adaptadores na máquina e o que eu preciso é saber o IP de uma conexão que acabei de estabelecer (usando a função ConnMgrEstablishConnectionSync).
    Com a função ConnMgrQueryDetailedStatus eu também consigo obter os IPs das conexões, mas não consigo associar qual conexão foi estabelecida, já que eu passo para
    ConnMgrEstablishConnectionSync um GUID como parâmetro.
    Um exemplo:

    Usando o trecho de código:
    ...
    GUID networkGUID = IID_DestNetInternet; // {436EF144-B4FB-4863-A041-8F905A62C572}
    ...
    CONNMGR_CONNECTIONINFO m_connMgrInfo;
    memset( &m_connMgrInfo, 0, sizeof( m_connMgrInfo ) );
    m_connMgrInfo.cbSize      = sizeof( m_connMgrInfo );
    m_connMgrInfo.dwParams    = CONNMGR_PARAM_GUIDDESTNET;
    m_connMgrInfo.dwFlags     = m_useProxyIfAvailable ? CONNMGR_FLAG_PROXY_HTTP : 0;
    m_connMgrInfo.dwPriority  = CONNMGR_PRIORITY_USERINTERACTIVE;
    m_connMgrInfo.guidDestNet = networkGUID; // Passo o GUID da conexão que eu quero

    HRESULT hr = ConnMgrEstablishConnectionSync( &m_connMgrInfo, &m_connMgrHandle, 30000, &dwStatus );
    if (FAILED(hr))
    {
    // trata o erro
    }

    //Conexão estabelecida


    Após a conexão estabelecida, se eu listar todas as conexões com a função
    ConnMgrQueryDetailedStatus, obtenho o seguinte:

    ------------------------------------
    Connection dwConnectionStatus: 32
    Connection dwFlags: 0
    Connection dwParams: 879
    Connection dwSecure: 0
    Connection dwSignalQuality: 0
    Connection dwType: 6
    Connection dwSubtype: 1
    Connection dwVer: 1
    Connection guidDestNet: {A1182988-0D73-439E-87AD-2A5B369F808B}
    Connection guidSourceNet: {02188B22-E3B8-465B-B75C-176800684CB4}
    Connection pIPAddr:
    Connection szAdapterName:
    Connection szDescription: null-corp-{02188B22-E3B8-465B-B75C-176800684CB4}
    --------------------------------------
    Connection dwConnectionStatus: 32
    Connection dwFlags: 0
    Connection dwParams: 879
    Connection dwSecure: 0
    Connection dwSignalQuality: 0
    Connection dwType: 6
    Connection dwSubtype: 1
    Connection dwVer: 1
    Connection guidDestNet: {436EF144-B4FB-4863-A041-8F905A62C572}
    Connection guidSourceNet: {02188B22-E3B8-465B-B75C-176800684CB4}
    Connection pIPAddr:
    Connection szAdapterName:
    Connection szDescription: HTTP-{02188B22-E3B8-465B-B75C-176800684CB4}
    --------------------------------------
    Connection dwConnectionStatus: 32
    Connection dwFlags: 0
    Connection dwParams: 879
    Connection dwSecure: 0
    Connection dwSignalQuality: 0
    Connection dwType: 6
    Connection dwSubtype: 2
    Connection dwVer: 1
    Connection guidDestNet: {7022E968-5A97-4051-BC1C-C578E2FBA5D9}
    Connection guidSourceNet: {053A7E76-B658-4441-801A-71AF42636AB4}
    Connection pIPAddr:
    Connection szAdapterName:
    Connection szDescription: WAP-{053A7E76-B658-4441-801A-71AF42636AB4}
    --------------------------------------
    Connection dwConnectionStatus: 32
    Connection dwFlags: 5
    Connection dwParams: 887
    Connection dwSecure: 0
    Connection dwSignalQuality: 0
    Connection dwType: 1
    Connection dwSubtype: 6
    Connection dwVer: 1
    Connection guidDestNet: {02188B22-E3B8-465B-B75C-176800684CB4}
    Connection guidSourceNet: {00000000-0000-0000-0000-000000000000}
    Connection pIPAddr:
    Connection szAdapterName:
    Connection szDescription: autotrac
    --------------------------------------
    Connection dwConnectionStatus: 32
    Connection dwFlags: 5
    Connection dwParams: 887
    Connection dwSecure: 0
    Connection dwSignalQuality: 0
    Connection dwType: 1
    Connection dwSubtype: 6
    Connection dwVer: 1
    Connection guidDestNet: {D39778A4-390F-4E2D-BF0D-E43B8C51AF3F}
    Connection guidSourceNet: {00000000-0000-0000-0000-000000000000}
    Connection pIPAddr:
    Connection szAdapterName:
    Connection szDescription: TIM TV
    --------------------------------------
    Connection dwConnectionStatus: 32
    Connection dwFlags: 5
    Connection dwParams: 887
    Connection dwSecure: 0
    Connection dwSignalQuality: 0
    Connection dwType: 1
    Connection dwSubtype: 6
    Connection dwVer: 1
    Connection guidDestNet: {2358C3DF-5EFE-40B7-A2B6-C3CFB08BD28D}
    Connection guidSourceNet: {00000000-0000-0000-0000-000000000000}
    Connection pIPAddr:
    Connection szAdapterName:
    Connection szDescription: TIM BOX
    --------------------------------------
    Connection dwConnectionStatus: 32
    Connection dwFlags: 5
    Connection dwParams: 887
    Connection dwSecure: 0
    Connection dwSignalQuality: 0
    Connection dwType: 1
    Connection dwSubtype: 6
    Connection dwVer: 1
    Connection guidDestNet: {C101BCFD-FF8A-4E7A-B322-D943C01CFF4A}
    Connection guidSourceNet: {00000000-0000-0000-0000-000000000000}
    Connection pIPAddr:
    Connection szAdapterName:
    Connection szDescription: TIM MMS
    --------------------------------------
    Connection dwConnectionStatus: 32
    Connection dwFlags: 5
    Connection dwParams: 887
    Connection dwSecure: 0
    Connection dwSignalQuality: 0
    Connection dwType: 1
    Connection dwSubtype: 6
    Connection dwVer: 1
    Connection guidDestNet: {053A7E76-B658-4441-801A-71AF42636AB4}
    Connection guidSourceNet: {00000000-0000-0000-0000-000000000000}
    Connection pIPAddr:
    Connection szAdapterName:
    Connection szDescription: TIM WAP FAST
    --------------------------------------
    Connection dwConnectionStatus: 16
    Connection dwFlags: 5
    Connection dwParams: 3063
    Connection dwSecure: 0
    Connection dwSignalQuality: 0
    Connection dwType: 1
    Connection dwSubtype: 6
    Connection dwVer: 1
    Connection guidDestNet: {02188B22-E3B8-465B-B75C-176800684CB4}
    Connection guidSourceNet: {00000000-0000-0000-0000-000000000000}
    Connection pIPAddr: 189.117.169.245
    Connection szAdapterName: WWAN1-tim.br-1
    Connection szDescription: TIM CONNECT FAST
    --------------------------------------


    O que eu preciso é o IP que está em negrito. O que eu preciso é uma maneira de associar o GUID que eu passei
    {436EF144-B4FB-4863-A041-8F905A62C572} com o GUID da conexão que foi estabelecida (Podem haver outras conexões estabelecidas), ou outra maneira de obter esse IP.

    Obrigado!

    sexta-feira, 31 de outubro de 2008 17:44
  • Você não consegue usar alguma propriedade, por exemplo: szDescription ? ou pegar a última conexão ?

     

    []s,

     

    sexta-feira, 31 de outubro de 2008 17:52
  • Pegar a última conexão é o que eu preciso.
    Quando o usuário informa a qual rede ele quer se conectar, até dá pra usar o szDescription, mas o problema é quando ele não especificar (aí tenho que usar o GUID genérico
    IID_DestNetInternet). O intuito de usar esse GUID IID_DestNetInternet é que a conexão é feita de forma transparente (do mesmo modo quando vc abre o internet explorer no Pocket Pc e ele se conecta a internet automaticamente) sem que o usuário se preocupe em configurar nada.

    sexta-feira, 31 de outubro de 2008 18:04
  • Então acho que uma solução simples para o seu caso é armazena a lista de IPs antes de conectar e comparar com a lista depois de conectar, a diferença é o novo IP.

     

    []s,

    sexta-feira, 31 de outubro de 2008 18:20
  • Eu até tinha pensado em fazer isso, mas não é confiável porque uma outra aplicação pode estabelecer uma conexão neste meio tempo, aí corro o risco de pegar o IP de uma outra conexão!
    Este problema está me tirando alguns cabelos. heheh

    Valeu!
    sexta-feira, 31 de outubro de 2008 18:36
  • Você já tentou usar a OpenNetCF: http://community.opennetcf.com/

     

    Eu usei em diversos projetos, inclusive para conexões GPRS e funciona muito bem. Você trabalha direto no adaptador e assim fica fácil pegar o IP.

     

    []s,

     

     

    sexta-feira, 31 de outubro de 2008 19:03