[Mono-list] Detect plug/unplug ethernet cable

Petit Eric surfzoid at gmail.com
Mon Dec 22 10:02:34 EST 2008


That's the answer ??

2008/12/20 Petit Eric <surfzoid at gmail.com>:
> 2008/12/20 Miguel de Icaza <miguel at novell.com>:
>>
>>> ...if there isn't a way to do this... there is a workaround to know this
>>> event for example reading a particular file or execute a shell command or in
>>> some other way in any languages (c/c++...)!?
>>
>> You can read the status from /sys/devices
>>
>> _______________________________________________
>> Mono-list maillist  -  Mono-list at lists.ximian.com
>> http://lists.ximian.com/mailman/listinfo/mono-list
>>
>
> In specific language, VB NET you have Mycomputer.network , after you
> have wmi (not yet for mono/linux) where you can loop for each eth
> device and know lot of info.
> I really think, the best of Mono is the "easy" crossplatform, then
> take lot of platform specific solution are not the best choice ?
>
> In C# :
>
>
>                        IPGlobalProperties computerProperties =
> IPGlobalProperties.GetIPGlobalProperties();
>
>                        NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
>
>                        Trace.WriteLine(System.DateTime.Now + ": " + "Interface information
> for " + computerProperties.HostName + "." +
> computerProperties.DomainName);
>
>                        NetworkInterface adapter = null;
>
>                        string[] Tablo = null;
>
>                        int Compteur = 0;
>
>                        bool IsUp = false;
>
>                        foreach (NetworkInterface adapter_loopVariable in nics) {
>
>                                adapter = adapter_loopVariable;
>
>                                if (adapter.OperationalStatus == OperationalStatus.Up &
> adapter.NetworkInterfaceType != NetworkInterfaceType.Loopback) IsUp =
> true;
>
>                                IPInterfaceProperties properties = adapter.GetIPProperties();
>
>                                //Trace.WriteLine(Date.Now & ": " & adapter.Description)
>
>                                //Trace.WriteLine(Date.Now & ": " &
> String.Empty.PadLeft(adapter.Description.Length, "="c))
>
>                                //Trace.WriteLine(Date.Now & ": " & "  Interface type
> .......................... : {0}", adapter.NetworkInterfaceType)
> 'Ethernet
>
>                                //Trace.WriteLine(Date.Now & ": " & "  Physical Address
> ........................ : {0}",
> adapter.GetPhysicalAddress().ToString())
>
>                                //Trace.WriteLine(Date.Now & ": " & "  Is receive
> only.......................... : {0}", adapter.IsReceiveOnly)
>
>                                //Trace.WriteLine(Date.Now & ": " & "
> Multicast................................ : {0}",
> adapter.SupportsMulticast)
>
>                                if (adapter.GetPhysicalAddress().ToString() != string.Empty) {
>
>                                        //And adapter.OperationalStatus = OperationalStatus.Up Then
>
>                                        Array.Resize(ref Tablo, Compteur + 1);
>
>                                        Tablo[Compteur] = adapter.GetPhysicalAddress().ToString();
>
>                                        Compteur += 1;
>
>                                }
>
>                        }
>
>                        if (IsUp == false) {
>
>                                MessageBox.Show("Aucune carte rÃ(c)seaux detectÃ(c)e et/ou
> conectÃ(c)e, impossible de continuer !", "Fatal",
> MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
>
>                                //End
>
>                        }
>
>
> In VB NET :
>        Dim computerProperties As IPGlobalProperties =
> IPGlobalProperties.GetIPGlobalProperties()
>        Dim nics As NetworkInterface() =
> NetworkInterface.GetAllNetworkInterfaces()
>        Trace.WriteLine(Date.Now & ": " & "Interface information for "
> & computerProperties.HostName & "." & computerProperties.DomainName)
>        Dim adapter As NetworkInterface
>        Dim Tablo() As String = Nothing
>        Dim Compteur As Integer = 0
>        Dim IsUp As Boolean = False
>        For Each adapter In nics
>            If adapter.OperationalStatus = OperationalStatus.Up And _
>            adapter.NetworkInterfaceType <>
> NetworkInterfaceType.Loopback Then IsUp = True
>            Dim properties As IPInterfaceProperties = adapter.GetIPProperties()
>            'Trace.WriteLine(Date.Now & ": " & adapter.Description)
>            'Trace.WriteLine(Date.Now & ": " &
> String.Empty.PadLeft(adapter.Description.Length, "="c))
>            'Trace.WriteLine(Date.Now & ": " & "  Interface type
> .......................... : {0}", adapter.NetworkInterfaceType)
> 'Ethernet
>            'Trace.WriteLine(Date.Now & ": " & "  Physical Address
> ........................ : {0}",
> adapter.GetPhysicalAddress().ToString())
>            'Trace.WriteLine(Date.Now & ": " & "  Is receive
> only.......................... : {0}", adapter.IsReceiveOnly)
>            'Trace.WriteLine(Date.Now & ": " & "
> Multicast................................ : {0}",
> adapter.SupportsMulticast)
>            If adapter.GetPhysicalAddress().ToString() <> String.Empty
> Then 'And adapter.OperationalStatus = OperationalStatus.Up Then
>                ReDim Preserve Tablo(Compteur)
>                Tablo(Compteur) = adapter.GetPhysicalAddress().ToString()
>                Compteur += 1
>            End If
>        Next adapter
>        If IsUp = False Then
>            MessageBox.Show("Aucune carte réseaux detectée et/ou
> conectée, impossible de continuer !", _
>            "Fatal", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
>            'End
>        End If
>
>
>
> --
>
> Cordially.
>
> Small Eric Quotations of the days:
> ---------------------------------------------------------------------------
> If one day one reproaches you that your work is not a work of
> professional, say you that:
> Amateurs built the arch of Noah, and professionals the Titanic.
> ---------------------------------------------------------------------------
>
> Few people are done for independence, it is the privilege of the powerful ones.
> ---------------------------------------------------------------------------
>
> No key was wounded during the drafting of this message.
>



-- 

Cordially.

Small Eric Quotations of the days:
---------------------------------------------------------------------------
If one day one reproaches you that your work is not a work of
professional, say you that:
Amateurs built the arch of Noah, and professionals the Titanic.
---------------------------------------------------------------------------

Few people are done for independence, it is the privilege of the powerful ones.
---------------------------------------------------------------------------

No key was wounded during the drafting of this message.


More information about the Mono-list mailing list