elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  C# - Mostrar mi interfaz de red Wifi
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: C# - Mostrar mi interfaz de red Wifi  (Leído 4,795 veces)
TickTack


Desconectado Desconectado

Mensajes: 428


CipherX


Ver Perfil
C# - Mostrar mi interfaz de red Wifi
« en: 11 Julio 2017, 09:15 am »

Hola,

queria mostrar mi interfaz de red Wifi o Adaptador con c#. En realidad, como he leido, deberia ser wlan0. Pero yo soy nuevo en el tema de Auditoria.

Yo hice un textBox multilineado.

Bueno en el evento del click de un boton escribi esto:

Código:
Adapters obj = new Adapters();
var value = obj.net_adapters();
textBox1.AppendText(value);

Y despues hice una clase:

Código:
public class Adapters
    {
        public string net_adapters()
        {
            string value = string.Empty;
            foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
            {
                value = nic.Name;
            }
            return value;
        }
    }

Pero al probar el codigo, en el textBox multilineado me sale conexión Lan* 2.
Esta bien eso?

O tiene que salir wlan0?

Alguien me puede ayudar que hasta ahora solo estuve probando ya que no tengo experiencia en el tema de Auditoria.

Gracias y saludos


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.813



Ver Perfil
Re: C# - Mostrar mi interfaz de red Wifi
« Respuesta #1 en: 11 Julio 2017, 12:36 pm »

en el evento del click de un boton escribi esto:

Código:
Adapters obj = new Adapters();
var value = obj.net_adapters();

Lo que estás haciendo no es del todo correcto, estás creando una instancia de una clase solamente para usar un miembro de uso genérico; en su lugar deberías asignarle un nivel de acceso global (keyword static en C#) al método, y llamarlo diréctamente, de esta forma estarás escribiendo código rehutilizable que te servirá para cualquier otro proyecto en el futuro...

Código
  1. public class Adapters {
  2.    public static string net_adapters() {
  3.        // ...
  4.    }
  5. }

Código
  1. string value = Adapters.net_adapters();



Código
  1.        public string net_adapters()
  2.        {
  3.            string value = string.Empty;
  4.            foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
  5.            {
  6.                value = nic.Name;
  7.            }
  8.            return value;
  9.        }

Pero al probar el codigo, en el textBox multilineado me sale conexión Lan* 2.
Esta bien eso?

Fíjate bien en el código que has escrito, sobre todo en la linea que he resaltado...    la función NetworkInterface.GetAllNetworkInterfaces() devuelve todas las interfaces de red que tienes (el propio nombre de la función se explica por si mismo), y en cada iteración tú estás reemplazando el valor de la variable "value", esto quiere decir que al final de ese bloque de código solo devuelves el nombre de la interfáz de la última iteración del búcle, y esa puede tener cualquier nombre... dependiendo del equipo, idioma del S.O y su configuración.

Partiendo de la premisa de que el programador no puede tener la certeza de la cantidad de interfaces/conexiones de red existentes en un equipo, tu función y la forma en que vas a representar dicha información en la UI debes adaptarlo todo para esperar devolver y representar una secuencia de elementos (un array), no esperar solamente que se devuelva 1 única interfáz, por que esa asunción no puedes hacerla. A través de tu UI puedes permitir la selección manual o automática de una de las interfaces de red que estén disponibles. Y para devolver unicamente interfaces wi-fi debes añadir un criterio adicional, evaluando el valor de la propiedad NetworkInterface.NetworkInterfaceType en cada iteración...

No tengo wi-fi presente en este PC, así que el siguiente código que he escrito no he podido verificarlo, pero en teoría solamente debería devolverte las interfaces wi-fi/wireless:

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Net.NetworkInformation;

Código
  1. public sealed class NetworkUtils {
  2.  
  3.    [DebuggerNonUserCode()]
  4.    private NetworkUtils() {}
  5.  
  6.    [DebuggerStepThrough()]
  7.    public static IEnumerable<NetworkInterface> EnumerateWirelessAdapters() {
  8.  
  9.        foreach (NetworkInterface adapter in NetworkInterface.GetAllNetworkInterfaces()) {
  10.            if (adapter.NetworkInterfaceType == NetworkInterfaceType.Wireless80211) {
  11.                yield return adapter;
  12.            }
  13.        }
  14.  
  15.    }
  16.  
  17. }

Código
  1. IEnumerable<NetworkInterface> adapters = NetworkUtils.EnumerateWirelessAdapters();
  2.  
  3. foreach (NetworkInterface adapter in adapters) {
  4.    Console.WriteLine(adapter.Name);
  5. }

Saludos


« Última modificación: 11 Julio 2017, 16:52 pm por Eleкtro » En línea

TickTack


Desconectado Desconectado

Mensajes: 428


CipherX


Ver Perfil
Re: C# - Mostrar mi interfaz de red Wifi
« Respuesta #2 en: 11 Julio 2017, 14:42 pm »

Hola Elektro,

gracias por tu aporte. De veras, muchisimas gracias.

Citar
Fíjate bien en el código que has escrito, sobre todo en la linea que he resaltado...    la función NetworkInterface.GetAllNetworkInterfaces() devuelve todas las interfaces de red que tienes (el propio nombre de la función se explica por si mismo), y en cada iteración tú estás reemplazando el valor de la variable "value", esto quiere decir que al final de ese bloque de código solo devuelves el nombre de la interfáz de la última iteración del búcle, y esa puede tener cualquier nombre... dependiendo del equipo, idioma del S.O y su configuración.

Joder. Ya quiero dejar de cometer esas estupideces. Como haces tu? No se pero yo puedo estar mucho tiempo revisando una y otra vez el codigo pero siempre se me escapa a los ojos. Creo que nunca voy a poder a hacer un buen programa el dia de manana porque estara lleno de bugs...



Bueno. Probe tu codigo.

Antes me fije en tu codigo. Y entiendo a lo que vas. Anque sinceramente tengo que ver todavia lo que significa [DebuggerNonUserCode()] y [DebuggerStepperBoundary()].

Al probar tu codigo me larga esto: "Conexión de red inalámbrica"

Como esta?

Gracias y saludos

PD.: Cabe destacar que modifique Console.WriteLine(adapter.Name); por textBox1.AppendText(adapter.Name);
« Última modificación: 11 Julio 2017, 14:56 pm por TickTack » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.813



Ver Perfil
Re: C# - Mostrar mi interfaz de red Wifi
« Respuesta #3 en: 11 Julio 2017, 16:48 pm »

Creo que nunca voy a poder a hacer un buen programa el dia de manana porque estara lleno de bugs...

Dicen que la práctica hace al maestro (yo no soy un gurú ni mucho menos, que no se me mal interprete). Cuantos más bugs hayas solucionado, más experiencia irás obteniendo y menos fallos tendrás que corregir...

PD.: Cabe destacar que modifique Console.WriteLine(adapter.Name); por textBox1.AppendText(adapter.Name);

Te sugiero utilizar un ListBox, es un control más..."representativo" para estos fines, al menos lo es más que un TextBox multilinea.

tengo que ver todavia lo que significa [DebuggerNonUserCode()] y [DebuggerStepperBoundary()].

No te fijes mucho en eso por el momento, son atributos de clase (metadatos) que utilizo para modificar (optimizar) el comportamiento del debugger de Visual Studio y mi productividad. Es util para la depuración con o sin el uso de breakpoints... dependiendo del atributo de clase que le asignes a un miembro, y siempre que la característica Just My Code esté activada en Visual Studio.

( Por cierto, el atributo que le quise poner en realidad es 'DebuggerStepThrough', no 'DebuggerStepperBoundary', pero lo escribí tan deprisa el código que no me fijé demasiado bien xD. )

Al probar tu codigo me larga esto: "Conexión de red inalámbrica"
Como esta?

Eso puedes averiguarlo tú mismo... abre el panel de control, dirígete a: Panel de control\Redes e Internet\Conexiones de red y comprueba si es la interfáz correcta.

Saludos!
« Última modificación: 11 Julio 2017, 16:53 pm por Eleкtro » En línea

TickTack


Desconectado Desconectado

Mensajes: 428


CipherX


Ver Perfil
Re: C# - Mostrar mi interfaz de red Wifi
« Respuesta #4 en: 11 Julio 2017, 18:52 pm »

Hola Elektro,

lo averigue, y si, dice Conexion de red inalambrica. Esta bien.
O no?

Si esta bien... hay una forma de poner mi tarjeta wifi en modo premiscuo? (No quize abrir un nuevo tema porque no sabia si seria adecuado) De que maneras?

Gracias y saludos
« Última modificación: 11 Julio 2017, 19:07 pm por TickTack » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
BackTrack Problema con red wifi [Interfaz wlan0] « 1 2 »
GNU/Linux
Debci 14 15,471 Último mensaje 11 Agosto 2011, 20:22 pm
por Foxy Rider
Evitar mostrar errores en mysql y en vez mostrar mensaje personalizado
Bases de Datos
Cioouw 3 11,509 Último mensaje 26 Abril 2010, 16:25 pm
por Cioouw
¿Cómo "parchear" mi interfaz Wifi.?
Wireless en Linux
JoniVillegas 2 2,189 Último mensaje 11 Agosto 2015, 03:00 am
por Sh4k4
Cómo ocultar o mostrar redes WiFi en Windows
Noticias
wolfbcn 0 1,544 Último mensaje 26 Enero 2017, 21:41 pm
por wolfbcn
[DUDA] Mostrar mensaje al ingresar en red wifi
Dudas Generales
MDd2 0 1,914 Último mensaje 3 Junio 2017, 15:27 pm
por MDd2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines