Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Savoir si l'utilisateur est connecté à internet.

3 réponses
Avatar
Gilles TOURREAU
Bonjour tout le monde !

Comment peut-on faire en .NET pour savoir si un utilisateur est connecté à
internet (Via n'importe quel moyen : ADSL, RTC, Réseau d'entreprise,
...etc)

En vous remerciant par avance de vos lumières...

Cordialement

--
Gilles TOURREAU
Responsable Informatique
gilles.tourreau@pos.fr

S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr

3 réponses

Avatar
Patrick Philippot
Gilles TOURREAU wrote:
Comment peut-on faire en .NET pour savoir si un utilisateur est
connecté à internet (Via n'importe quel moyen : ADSL, RTC, Réseau
d'entreprise, ...etc)



Bonjour,

Je n'ai pas une méthode spécifique à .Net mais la seule qui fonctionne
vraiment dans tous les cas, contrairement à l'utilisation des APIs
classiques qui ne donnent pas de résultats cohérents, est celle que je
décris ici:

http://www.codeguru.com/cpp/i-n/internet/generalinternet/comments.php/c3437/?threadC800

Ce code est facilement portable sous .Net. Notez que IPHLPAPI peut être
installée sur les systèmes où elle n'est pas présente en natif.

Cordialement.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Simon Mourier [SoftFluent]
Il faut dire qu'il n'y a pas vraiment de bonne réponse à la question de
départ. Tout dépend de ce que l'on cherche vraiment à déterminer. On peut
avoir un réseau sans être "connecté à Internet" :-)

L'API de base "officielle" Microsoft est InetIsOffline, qui est équivalente
à InternetQueryOption avec INTERNET_OPTION_CONNECTED_STATE (Wininet.dll).
Elle correspond à l'information que Internet Explorer affiche dans le menu
Fichier / Travailler hors connexion. C'est une information pas pire qu'une
autre :-)

Voici un code C# qui montre comment l'utiliser, je ne crois pas quelle
déclenche l'autodial?

[DllImport("wininet.dll", SetLastError = true, EntryPoint =
"InternetQueryOptionA")]
private static extern bool InternetQueryOptionAInt32(IntPtr handle, int
option, ref int int32Buffer, ref int bufferLength);

[DllImport("url.dll")]
private static extern bool InetIsOffline();

// plus compliqué mais plus d'infos
public static bool IsOnline()
{
const int INTERNET_STATE_CONNECTED = 0x00000001; // connected state
(mutually exclusive with disconnected)
const int INTERNET_STATE_DISCONNECTED = 0x00000002; // disconnected
from network
const int INTERNET_STATE_DISCONNECTED_BY_USER = 0x00000010; //
disconnected by user request
const int INTERNET_STATE_IDLE = 0x00000100; // no network requests
being made (by Wininet)
const int INTERNET_STATE_BUSY = 0x00000200; // network requests
being made (by Wininet)
const int INTERNET_OPTION_CONNECTED_STATE = 50;
int state = 0;
int size = Marshal.SizeOf(state);
if (!InternetQueryOptionAInt32(IntPtr.Zero,
INTERNET_OPTION_CONNECTED_STATE, ref state, ref size))
throw new Win32Exception(Marshal.GetLastWin32Error());
return ((state & INTERNET_STATE_CONNECTED) != 0);
}

// plus simple mais moins d'infos!
public static bool IsOnline2()
{
return !InetIsOffline();
}

static void Main(string[] args)
{
Console.WriteLine("IsOnline=" + IsOnline());
Console.WriteLine("IsOnline2=" + IsOnline2());
}

Simon.
www.softfluent.com


"Patrick Philippot" a écrit dans le
message de news: OY9$
Gilles TOURREAU wrote:
Comment peut-on faire en .NET pour savoir si un utilisateur est
connecté à internet (Via n'importe quel moyen : ADSL, RTC, Réseau
d'entreprise, ...etc)



Bonjour,

Je n'ai pas une méthode spécifique à .Net mais la seule qui fonctionne
vraiment dans tous les cas, contrairement à l'utilisation des APIs
classiques qui ne donnent pas de résultats cohérents, est celle que je
décris ici:

http://www.codeguru.com/cpp/i-n/internet/generalinternet/comments.php/c3437/?threadC800

Ce code est facilement portable sous .Net. Notez que IPHLPAPI peut être
installée sur les systèmes où elle n'est pas présente en natif.

Cordialement.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr





Avatar
Gilles TOURREAU
Le Tue, 06 Feb 2007 10:25:38 +0100, Simon Mourier [SoftFluent]
a écrit:

Il faut dire qu'il n'y a pas vraiment de bonne réponse à la question de
départ. Tout dépend de ce que l'on cherche vraiment à déterminer. On peut
avoir un réseau sans être "connecté à Internet" :-)

L'API de base "officielle" Microsoft est InetIsOffline, qui est
équivalente
à InternetQueryOption avec INTERNET_OPTION_CONNECTED_STATE (Wininet.dll).
Elle correspond à l'information que Internet Explorer affiche dans le
menu
Fichier / Travailler hors connexion. C'est une information pas pire
qu'une
autre :-)

Voici un code C# qui montre comment l'utiliser, je ne crois pas quelle
déclenche l'autodial?

[DllImport("wininet.dll", SetLastError = true, EntryPoint > "InternetQueryOptionA")]
private static extern bool InternetQueryOptionAInt32(IntPtr handle, int
option, ref int int32Buffer, ref int bufferLength);

[DllImport("url.dll")]
private static extern bool InetIsOffline();

// plus compliqué mais plus d'infos
public static bool IsOnline()
{
const int INTERNET_STATE_CONNECTED = 0x00000001; // connected
state
(mutually exclusive with disconnected)
const int INTERNET_STATE_DISCONNECTED = 0x00000002; // disconnected
from network
const int INTERNET_STATE_DISCONNECTED_BY_USER = 0x00000010; //
disconnected by user request
const int INTERNET_STATE_IDLE = 0x00000100; // no network
requests
being made (by Wininet)
const int INTERNET_STATE_BUSY = 0x00000200; // network requests
being made (by Wininet)
const int INTERNET_OPTION_CONNECTED_STATE = 50;
int state = 0;
int size = Marshal.SizeOf(state);
if (!InternetQueryOptionAInt32(IntPtr.Zero,
INTERNET_OPTION_CONNECTED_STATE, ref state, ref size))
throw new Win32Exception(Marshal.GetLastWin32Error());
return ((state & INTERNET_STATE_CONNECTED) != 0);
}

// plus simple mais moins d'infos!
public static bool IsOnline2()
{
return !InetIsOffline();
}

static void Main(string[] args)
{
Console.WriteLine("IsOnline=" + IsOnline());
Console.WriteLine("IsOnline2=" + IsOnline2());
}

Simon.
www.softfluent.com


"Patrick Philippot" a écrit dans le
message de news: OY9$
Gilles TOURREAU wrote:
Comment peut-on faire en .NET pour savoir si un utilisateur est
connecté à internet (Via n'importe quel moyen : ADSL, RTC, Réseau
d'entreprise, ...etc)



Bonjour,

Je n'ai pas une méthode spécifique à .Net mais la seule qui fonctionne
vraiment dans tous les cas, contrairement à l'utilisation des APIs
classiques qui ne donnent pas de résultats cohérents, est celle que je
décris ici:

http://www.codeguru.com/cpp/i-n/internet/generalinternet/comments.php/c3437/?threadC800

Ce code est facilement portable sous .Net. Notez que IPHLPAPI peut être
installée sur les systèmes où elle n'est pas présente en natif.

Cordialement.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr










Merci pour l'API c'est ce que je cherchais...

Cordialement

--
Gilles TOURREAU
Responsable Informatique


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr