Como obter ip da maquina?

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

TerraSoftware
Usuário Nível 3
Usuário Nível 3
Mensagens: 353
Registrado em: 28 Jul 2004 13:14
Localização: Cianorte-PR
Contato:

Como obter ip da maquina?

Mensagem por TerraSoftware »

Caros colegas, como posso obter o ip da maquina onde o sistema esta rodando?
www.sisterra.com.br
xHarbour 1.0.0 - Bcc 6.3 - Gtwvw/Hwgui
DbfCdx/MySql
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Como obter ip da maquina?

Mensagem por sygecom »

Olá Rene,
Para pegar o IP da maquina pode usar a função abaixo:
IP_LOCAL()

Código: Selecionar todos

PROCEDURE IP_LOCAL()
LOCAL aHosts
LOCAL cName
Local cEstacao:=netname(.f.)
InetInit()
aHosts := InetGetHosts( cEstacao )
IF aHosts == NIL
   aHosts := InetGetAlias( cEstacao )
ENDIF
IF Empty(aHosts)
   aHosts := InetGetAlias( cEstacao )
ENDIF
InetCleanup()
RETURN  ahosts[1 ]
Para pegar o IP externo o do Modem, pode usar a função abaixo:

Código: Selecionar todos

FUNCTION IP_EXTERNO()
   url := 'http://www.meuip.com.br/'
   html:= ReadPage_ler( url )
   vRET:= PegaIP_ex(html)
RETURN vRET

FUNCTION PegaIP_ex(cHtml)
   LOCAL Pos, PosF
   Pos := At('IP?', Upper(cHtml) )
   IF Pos < 1
      RETURN 0
   ENDIF
   Pos   += Len('IP?')
   cHtml := subst( cHtml, Pos )
   PosF  := At('</TITLE>',Upper(cHtml)) - 1
   cHtml := Subst(cHtml,1,PosF)
RETURN cHtml

FUNCTION ReadPage_ler( cUrl )
   LOCAL oUrl, oCli, cRes := ''
   BEGIN SEQUENCE
      oUrl = TUrl():New( cUrl )
      IF EMPTY( oUrl )
         BREAK
      ENDIF
      oCli = TIpClientHttp():New( oUrl )
      //oCli = TIPClient():New( oUrl )  // para uso em xharbour 9970
      IF EMPTY( oCli )
         BREAK
      ENDIF
      oCli:nConnTimeout = 20000
      IF !oCli:Open( oUrl )
         BREAK
      ENDIF
      cRes := oCli:Read()
      oCli:Close()
   END SEQUENCE
RETURN cRes
Obs: Ambas tem que linkar a TIP.LIB
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Re: Como obter ip da maquina?

Mensagem por marcos.gurupi »

Belo exemplo. No exemplo IP_EXTERNO aconteceu o seguinte erro:

Código: Selecionar todos

Error BASE/3012  Argument error: INETCONNECT
Called from ->INETCONNECT(0)
Called from client.prg->TIPCLIENT:INETCONNECT(556)
Called from client.prg->TIPCLIENT:OPEN(213)
Called from NetServiceTray.prg->READPAGE_LER(1425)
Called from NetServiceTray.prg->IP_EXTERNO(1397)
Called from NetServiceTray.prg->PEGARIP(1372)
Called from NetServiceTray.prg->(b)MAIN(124)
Called from hwindow.prg->ONCOMMAND(444)
Called from hwindow.prg->(b)HMAINWINDOW(164)
Called from hwindow.prg->HMAINWINDOW:ONEVENT(243)
Called from ->HWG_ACTIVATEMAINWINDOW(0)
Called from hwindow.prg->HMAINWINDOW:ACTIVATE(232)
Called from NetServiceTray.prg->MAIN(135)

HwGUI 2.16 xHarbour build 1.0.0 Intl. (SimpLex)
Date:05/06/2008
Time:22:48:10
Marcos Roberto
NetService Software
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Como obter ip da maquina?

Mensagem por sygecom »

Marcos,
Tem que linkar a TIP.LIB.

Voce esta linkando ?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Re: Como obter ip da maquina?

Mensagem por marcos.gurupi »

Sim. Inclusive neste mesmo projeto eu uso o FTP.

Marcos Roberto
Marcos Roberto
NetService Software
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Como obter ip da maquina?

Mensagem por sygecom »

Marcos, desculpa foi erro meu esse exemplo peguei de um sistema meu que esta compilado com 9970, e para usar com xharbour 1.0.0 tem que mudar a seguinte linha:
oCli = TIpClient():New( oUrl )
para:
oCli = TIpClientHttp():New( oUrl )

Já editei o post acima, é só copiar novamente.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Re: Como obter ip da maquina?

Mensagem por MARCELOG »

Tem também essa função em C.
Peguei no projeto do Stanis.

MarceloG

Código: Selecionar todos

HB_FUNC (GETHOSTBYNAME)

/* 
Obtem ip do computador local
*/ 

{

 struct hostent * pHost;

 BYTE addr[ 20 ];

 strcpy( ( char * ) addr, "0.0.0.0" );

 pHost = gethostbyname( ( char * ) hb_parc( 1 ) ) ;

 if( pHost )
   {
      wsprintf( ( char * ) addr, "%i.%i.%i.%i",
               ( BYTE ) pHost->h_addr[ 0 ], ( BYTE ) pHost->h_addr[ 1 ],
               ( BYTE ) pHost->h_addr[ 2 ], ( BYTE ) pHost->h_addr[ 3 ] );
   }

 hb_retc( ( char * ) addr );
}
Editado pela última vez por Pablo César em 24 Mai 2012 20:04, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Água mole em pedra dura tanto bate que até espirra!
Responder