Internet connected or not
Moderator: Rathinagiri
Internet connected or not
Is there any reliable function to know computer is connected with Internet or not
BPD
Convert Dream into Reality through HMG
Convert Dream into Reality through HMG
Re: Internet connected or not
This is another way how to detect internet connection:
Code: Select all
#include "hmg.ch"
FUNCTION Main()
// https://msdn.microsoft.com/en-us/library/windows/desktop/aa384702(v=vs.85).aspx
LOCAL nFlags := 0
LOCAL lIsInternet := If(HMG_CallDLL("Wininet.dll", 0, "InternetGetConnectedState", @nFlags, 0) == 1, .T., .F.)
MsgBox("Is internet: " + HB_ValToStr(lIsInternet) + CRLF + CRLF + "Flags: 0x" + HB_NumToHex(nFlags, 4))
RETURN NIL
- serge_girard
- Posts: 3167
- Joined: Sun Nov 25, 2012 2:44 pm
- DBs Used: 1 MySQL - MariaDB
2 DBF - Location: Belgium
- Contact:
Re: Internet connected or not
Kryszstof,
Thanks, this would be a great 'standard' HMG function!
Serge
Thanks, this would be a great 'standard' HMG function!
Serge
There's nothing you can do that can't be done...
Re: Internet connected or not
Kryszstof,
Thank you, but still I am not satisfied, you will get .t. / Internet available even after we switch off the router, subject to LAN cable/status is connected
I am searching for perfect function, I think any function based on PING command will be perfect
Thank you, but still I am not satisfied, you will get .t. / Internet available even after we switch off the router, subject to LAN cable/status is connected
I am searching for perfect function, I think any function based on PING command will be perfect
BPD
Convert Dream into Reality through HMG
Convert Dream into Reality through HMG
Re: Internet connected or not
Well, not exactly the "perfect" function
but may want to give it a try...
Code: Select all
/*
IsInternet.prg
Check Internet connection
NOTE: needs hbtip library. (use hbtip.hbc)
BUILD: hbmk2 IsInternet hbtip.hbc
*/
PROCEDURE Main()
? "IConnect() says: you're " + IF( IConnect(), "connected!", "NOT connected!" )
RETURN NIL
FUNCTION IConnect( cUrl )
LOCAL oCon, oUrl
LOCAL lRet := .F.
hb_Default( @cUrl, "http://www.google.com" )
oUrl := tURL():New( cUrl )
oCon := TipClientHttp():New( oUrl )
oCon:nConnTimeout := 20000
IF ( lRet := oCon:Open( cUrl ) )
oCon:Close()
ENDIF
oCon := oUrl := NIL
RETURN lRet
regards,
---
Pete
Re: Internet connected or not
Is there an effective method to check the availability of the Internet without using PING?
Re: Internet connected or not
This is probably the simplest way with PINGing:
Code: Select all
FUNCTION Main()
// https://msdn.microsoft.com/en-us/library/windows/desktop/aa384346(v=vs.85).aspx
LOCAL lIsInternet := If(HMG_CallDLL("Wininet.dll", 0, "InternetCheckConnection", "http://www.google.com", 1 /*FLAG_ICC_FORCE_CONNECTION*/, 0) == 1, .T., .F.)
MsgBox("Is internet: " + HB_ValToStr(lIsInternet))
RETURN NIL
Re: Internet connected or not
Thank you Pete and KDJ
I had tested all the function and found that result from PING command is perfect
I request other user to post their result
I had tested all the function and found that result from PING command is perfect
I request other user to post their result
BPD
Convert Dream into Reality through HMG
Convert Dream into Reality through HMG
Re: Internet connected or not
Check Connectivity of Internet based on the result of PING command
You can also use this function to check computer IP in LAN before performing any action to avoid program crash
You can also use this function to check computer IP in LAN before performing any action to avoid program crash
Code: Select all
/*
Check Internet connectivity through PING command and it is reliable
From bpd2000
Expert help from KDJ
*/
#include "hmg.ch"
FUNCTION MAIN()
Local xerrdescription , xurl := "www.google.com"
xerrdescription := HB_PING(xurl)
Do Case
Case xerrdescription = 0
MSGINFO("Ping to " + xurl + " Succesful", "Internet Connection Available")
Case xerrdescription = 11001
MSGINFO("The reply buffer was too small.")
Case xerrdescription = 11002
MSGINFO("The destination network was unreachable.")
Case xerrdescription = 11003
MSGINFO("The destination host was unreachable.")
Case xerrdescription = 11004
MSGINFO("The destination protocol was unreachable.")
Case xerrdescription = 11005
MSGINFO("The destination port was unreachable.")
Case xerrdescription = 11006
MSGINFO("Insufficient IP resources were available.")
Case xerrdescription = 11007
MSGINFO("A bad IP option was specified.")
Case xerrdescription = 11008
MSGINFO("A hardware error occurred.")
Case xerrdescription = 11009
MSGINFO("The packet was too big.")
Case xerrdescription = 11010
MSGINFO("The request timed out." + hb_osnewline() +"Internet Connection Not Available")
Case xerrdescription = 11011
MSGINFO("A bad request.")
Case xerrdescription = 11012
MSGINFO("A bad route.")
Case xerrdescription = 11013
MSGINFO("The time to live (TTL) expired in transit.")
Case xerrdescription = 11014
MSGINFO("The time to live expired during fragment reassembly.")
Case xerrdescription = 11015
MSGINFO("A parameter problem.")
Case xerrdescription = 11016
MSGINFO("Datagrams are arriving too fast to be processed" + hb_osnewline() + ;
" and datagrams may have been discarded.")
Case xerrdescription = 11017
MSGINFO("An IP option was too big.")
Case xerrdescription = 11018
MSGINFO("A bad destination.")
Case xerrdescription = 11050
MSGINFO("A general failure" + hb_osnewline() + ;
"This error can be returned for some malformed ICMP packets.")
Otherwise
msginfo("Internet Connection Not Available")
ENDCASE
RETURN NIL
//https://groups.google.com/forum/#!topic/harbour-users/Jag2rPxWK_U
#pragma BEGINDUMP
#include <hbapi.h>
#include <winsock2.h>
#include <iphlpapi.h>
#include <icmpapi.h>
int hb_Ping( const char * cp )
{
HANDLE hIcmpFile;
unsigned long ipaddr = INADDR_NONE; // corrected by KDJ
DWORD dwRetVal;
char SendData[32] = "Data Buffer";
LPVOID ReplyBuffer;
DWORD ReplySize;
if( isalpha( cp[0] ) ) //host address is a name
{
WSADATA wsaData;
int iResult;
iResult = WSAStartup( MAKEWORD(2, 2), &wsaData );
if( iResult == 0 )
{
struct hostent *remoteHost = gethostbyname( cp );
if( remoteHost != NULL )
ipaddr = *(unsigned long *) remoteHost->h_addr_list[0];
WSACleanup();
}
}
else
ipaddr = inet_addr( cp );
if (ipaddr == INADDR_NONE)
return 1;
hIcmpFile = IcmpCreateFile();
if (hIcmpFile == INVALID_HANDLE_VALUE)
return 2;
ReplySize = sizeof(ICMP_ECHO_REPLY) + sizeof(SendData);
ReplyBuffer = (VOID*) malloc(ReplySize);
if (ReplyBuffer == NULL)
{
IcmpCloseHandle(hIcmpFile);
return 3;
}
dwRetVal = IcmpSendEcho(hIcmpFile, ipaddr, SendData, sizeof(SendData),
NULL, ReplyBuffer, ReplySize, 1000);
free(ReplyBuffer);
IcmpCloseHandle(hIcmpFile);
if (dwRetVal == 0)
return GetLastError();
return 0;
}
HB_FUNC( HB_PING )
{
hb_retni( hb_Ping( hb_parc( 1 ) ) );
}
#pragma ENDDUMP
BPD
Convert Dream into Reality through HMG
Convert Dream into Reality through HMG