🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: alt.pl.comp.lang.csharp
4 messages
4 total messages Started by WebSpider Wed, 27 Oct 2010 19:13
wybranie interfejsu sieciowego używanego do komunikacji z Internetem
#21815
Author: WebSpider
Date: Wed, 27 Oct 2010 19:13
8 lines
1196 bytes
?Witam!
Pobieram sobie listę adresów IP przypisanych do interfejsów, ale brakuje mi 
pomysłu
jak określić który z tych adresów należy do sieci dzięki której komputer ma 
połączenie
z Internetem. Prosiłbym o jakiś pomysł.
Pozdrawiam,
Konrad 
Re: wybranie interfejsu sieciowego używanego do komunikacji z Internetem
#21816
Author: Wiktor Zychla
Date: Thu, 28 Oct 2010 13:37
33 lines
2386 bytes
> Pobieram sobie listę adresów IP przypisanych do interfejsów, ale brakuje 
> mi pomysłu
> jak określić który z tych adresów należy do sieci dzięki której komputer 
> ma połączenie
> z Internetem. Prosiłbym o jakiś pomysł.
> Pozdrawiam,
> Konrad

nie mam pomysłu lepszego niż odsianie loopbacków i tuneli:

        foreach (NetworkInterface nic in 
NetworkInterface.GetAllNetworkInterfaces() )
        {
            if (
                 nic.NetworkInterfaceType != NetworkInterfaceType.Loopback 
&&
                 nic.NetworkInterfaceType != NetworkInterfaceType.Tunnel &&
                nic.OperationalStatus == OperationalStatus.Up)
            {
                 IPInterfaceProperties p = nic.GetIPProperties();

                 //
            }
        }

potem dalej nie wiem co. można się z interfejsu dowiedzieć o jego 
właściwości i tyle.
skądinąd jeśli się zrobi Ping na jakiś zdalny serwer to i tak nie wiem jak 
sprawdzić którym interfejsem to poszło, jeśli aktywne były dwa lub więcej.

sam się więc chętnie dowiem.

Wiktor Zychla 
Re: wybranie interfejsu sieciowego używanego do komunikacji z Internetem
#21817
Author: WebSpider
Date: Sun, 31 Oct 2010 12:39
28 lines
2144 bytes
?Wymyśliłem coś takiego:

NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
            foreach (NetworkInterface adapter in adapters)
            {
                IPInterfaceProperties properties = 
adapter.GetIPProperties();
                foreach (GatewayIPAddressInformation GateWay in 
properties.GatewayAddresses)
                {
                    if (GateWay.Address.ToString() != "0.0.0.0")
                    {
                        foreach (IPAddressInformation uniCast in 
properties.UnicastAddresses)
                        {
                            if (uniCast.Address.AddressFamily == 
AddressFamily.InterNetwork)
                            {
                                                            lokalny = 
uniCast.Address;
                            }
                        }
                    }
                }
            }
na końcu zmienna lokalne otrzymuje adres IP interfejsu który ma ustawioną 
bramę,
niestety jeśli więcej niż jeden będzie miał bramę to sposób odpada. 
Re: wybranie interfejsu sieciowego używanego do komunikacji z Internetem
#21818
Author: 3P
Date: Sun, 31 Oct 2010 21:34
33 lines
2205 bytes
Dnia 31-10-2010 o 13:39:31 WebSpider <webs1821@spaaamowe.gmail.com>  
napisał(a):

> ?Wymyśliłem coś takiego:
>
> NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
>             foreach (NetworkInterface adapter in adapters)
>             {
>                 IPInterfaceProperties properties =  
> adapter.GetIPProperties();
>                 foreach (GatewayIPAddressInformation GateWay in  
> properties.GatewayAddresses)
>                 {
>                     if (GateWay.Address.ToString() != "0.0.0.0")
>                     {
>                         foreach (IPAddressInformation uniCast in  
> properties.UnicastAddresses)
>                         {
>                             if (uniCast.Address.AddressFamily ==  
> AddressFamily.InterNetwork)
>                             {
>                                                             lokalny =  
> uniCast.Address;
>                             }
>                         }
>                     }
>                 }
>             }
> na końcu zmienna lokalne otrzymuje adres IP interfejsu który ma  
> ustawioną bramę,
> niestety jeśli więcej niż jeden będzie miał bramę to sposób odpada.

break; tam brakuje :)
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads