Página 1 de 1

COMANDO HARBOUR PARA SABER SE TEM INTERNET

Enviado: 13 Jul 2021 22:07
por jadires
Olá galera.]


Alguém sabe os comando harbour para checar se tem internet ativa na cpu ? ?

COMANDO HARBOUR PARA SABER SE TEM INTERNET

Enviado: 14 Jul 2021 07:26
por Jairo Maia
Não sei se alguém tem uma sugestão melhor, mas uso dessa forma:

Código: Selecionar todos

Func IConectada( cAddress )  // Se cAddress = Nil, por padrÒo checa o google
Local aHosts
inetInit()
If cAddress == Nil
 cAddress := "www.google.com.br"
EndiF
aHosts := inetGetHosts( cAddress )
IF aHosts == NIL .or. Len(aHosts)=0
 inetCleanup()
 Return .f.
endif
inetCleanup()
Return .t.
Se você não enviar a URL a ser verificada, ela checa o google, que é uma URL com significativa estabilidade.

COMANDO HARBOUR PARA SABER SE TEM INTERNET

Enviado: 14 Jul 2021 09:35
por Itamar M. Lins Jr.
Olá!
O windows fica um iconizinho no canto direito inferior.
Fica o desenho de um GLOBO.
Tem coisas que é bom deixar a cargo do sistema operacional.
Tem outros exemplos aqui no forum, basta procurar.
Antigamente agente conversava com a impressora, hoje conversamos com o sistema operacional sobre qual é o estado da impressora.
Mas mesmo assim, mesmo sem internet existe a porta loop back 127.0.0.1 ou localhost, que sempre funciona se desejar testar (apache) por exemplo local.

Saudações,
Itamar M. Lins Jr.

COMANDO HARBOUR PARA SABER SE TEM INTERNET

Enviado: 14 Jul 2021 09:47
por jadires
Muito Obg. Jairo Maia.

Me atendeu 100%

COMANDO HARBOUR PARA SABER SE TEM INTERNET

Enviado: 14 Jul 2021 19:25
por alxsts
Olá!

Fiz algumas alterações na função do Jairo (com licença Jairo).

Código: Selecionar todos

// Compilar: hbmk2 teste xhb.hbc

PROCEDURE Teste

   hb_Alert( If( IConectada( 'http://sitefoo.com/' ), 'True', 'False' ) )
   
RETURN   

//--------------------------------------------------------------------------
FUNCTION IConectada( cAddress )  // Se cAddress = Nil, por padrÒo checa o google

   LOCAL aHosts

   cAddress := If( Empty( cAddress ), "www.google.com", cAddress )

   InetInit()

   aHosts := InetGetHosts( cAddress )

   InetCleanup()

RETURN ( ! Empty( aHosts ) )
//--------------------------------------------------------------------------
Funciona mas, alguém sabe quais funções tem no Harbour no lugar destas do xHarbour: InetInit(), InetGetHosts() e InetCleanup()?
Só para não ter que linkar a xhb.hbc.

COMANDO HARBOUR PARA SABER SE TEM INTERNET

Enviado: 14 Jul 2021 22:36
por ANDRIL
Eu uso assim, as funções são do harbour uso a 3.2 atualmente.
? temInternet() //retorna .t. ou .f.
Abraços

Código: Selecionar todos

********************************************************************************
FUNCTION temInternet()
********************************************************************************
LOCAL string:="", cBai:="http://www.google.com", oHttp

oHttp:=TIpClientHttp():New(cBai)
if oHttp:open()
        /* pode haver uma demora na leitura, por isso este 'for' */
	for i=1 to 5
		string:=oHttp:readAll()	
		
		if !empty(string)
		exit
		endif
		millisec(200)
	next
	oHttp:close()
else
return .f.
endif

if !"ESTOU COM SORTE"$upper(string)
return .f.
endif
return .t.

COMANDO HARBOUR PARA SABER SE TEM INTERNET

Enviado: 15 Jul 2021 12:33
por alxsts
Olá!

Obrigado Andril.

Funciona. Retorna todo o código fonte da página inicial do Google mas depende da língua do local onde está executando, o que pode ser um inconveniente. Achei melhor a opção que usa funções do xHarbour. Ainda falta ver a CURL...