Como hacer mi propio hotspot

Hola CubaCoders:

Me imagino que muchos de ustedes utilicen smartphone y quizás algunos tengan laptop o un pc con soporte Wi-Fi y para conectar su smartphone a su pc o laptop utilicen el conocidísimo Connectifi que no es más que una aplicación que crea un hotspot o punto de acceso y hoy vamos a aprender cómo crear nuestro propio hotspot en C# utilizando Windows Forms.

Lo primero que vamos a hacer es ir al Visual Studio y crear un nuevo proyecto de tipo Windows Forms Application al que llamaremos MyHotspot, ahora el siguiente paso será definir cómo se va a ver nuestra aplicación y lo haremos de una forma sencilla, luego si ustedes quieren pueden cambiar la interfaz a su antojo, vamos a ir al Toolbox y vamos a seleccionar 2 Labels, 2 Textbox y un Botón, la interfaz debe quedar así:

UI

Luego vamos a dar doble clic en el botón para comenzar a programar las acciones de nuestro hotspot, una vez dentro del botón vamos a escribir lo siguiente:

string ssid = textBox1.Text, key = textBox2.Text;

            if (!connect)

            {

                if (textBox1.Text == null || textBox1.Text == “”)

                {

                    MessageBox.Show(“El nombre no puede estar en blanco !”,

                    “Information”, MessageBoxButtons.OK, MessageBoxIcon.Information);

                }

                else

                {

 

                    if (textBox2.Text == null || textBox2.Text == “”)

                    {

                        MessageBox.Show(“La contraseña no puede estar en blanco !”,

                        “Information”, MessageBoxButtons.OK, MessageBoxIcon.Information);

                    }

                    else

                    {

                        if (key.Length >= 6)

                        {

                            Hotspot(ssid, key, true);

                            textBox1.Enabled = false;

                            textBox2.Enabled = false;

                            button1.Text = “Stop”;

                            connect = true;

                        }

                        else

                        {

                            MessageBox.Show(”La contraseña debe tener más de 6 caracteres!”,

                            “Information”, MessageBoxButtons.OK, MessageBoxIcon.Information);

                        }

                    }

                }

            }

            else

            {

                Hotspot(null, null, false);

                textBox1.Enabled = true;

                textBox2.Enabled = true;

                button1.Text = “Start”;

                connect = false;

            }

 

Lo más llamativo que salta a la vista en estas líneas de código es la llamada a un método llamado Hotspot() que recibe como parámetros 2 string y un bool, el primer string es el ssid o sea el nombre de nuestro hotspot, el segundo string es la contraseña y el bool es el estado en que se encuentra nuestro hotspot, con estos parámetros este método es capaz de construir un hotspot haciendo uso de código DOS (código que utiliza la consola de Windows), todo lo demás que realiza el botón son validaciones de los campos. Ahora lo siguiente seria comenzar a programar el método Hotspot() y lo vamos a hacer de la siguiente manera:

private void Hotspot(string ssid, string key,bool status)

        {

            ProcessStartInfo processStartInfo = new ProcessStartInfo(“cmd.exe”);

            processStartInfo.RedirectStandardInput = true;

            processStartInfo.RedirectStandardOutput = true;

            processStartInfo.CreateNoWindow = true;

            processStartInfo.UseShellExecute = false;

            Process process = Process.Start(processStartInfo);

 

            if (process != null)

            {

                if (status)

                {

                    process.StandardInput.WriteLine(“netsh wlan set hostednetwork mode=allow”+ ssid + key);

                    process.StandardInput.WriteLine(“netsh wlan start hostednetwork”);

                    process.StandardInput.Close();

                }

                else

                {

                    process.StandardInput.WriteLine(“netsh wlan stop hostednetwork”);

                    process.StandardInput.Close();

                }

            }

        }

Vamos a detallar más de lo que hace este método que es el más importante: ProcessStartInfo es una clase que nos permite conformar algún proceso en Windows, en este caso el cmd.exe o sea levantar la consola de Windows, utilizamos processStartInfo.CreateNoWindow = true; para que se ejecute en segundo plano, luego creamos un objeto process de tipo Process que será el encargado de ejecutar los comandos de Windows y haciendo uso de process.StandardInput.WriteLine() escribimo comandos en la consola, con el comando “netsh wlan set hostednetwork mode=allow”+ ssid + key creamos el hotspot con nombre y contraseña, luego con el comando “netsh wlan start hostednetwork” ejecutamos dicho hotspot y con “netsh wlan stop hostednetwork” lo detenemos.

Ahora ya tenemos todo lo necesario para que nuestro hotspot funcione pero le falta algo y es que este tipo de comandos que utilizamos para crear el hotspot requieren de permisos de administrador para poder ejecutarse, pero no se pongan tristes para esto hay una solución: Vamos a la ventana de nuestro proyecto y le damos doble clic para meternos dentro de su evento Load() que nos permite programar lo que queremos que haga cuando cargue la aplicación en este caso lo que queremos es que se ejecute con privilegios de administrador entonces escribimos lo siguiente:

if (!IsAdmin())

            {

                Restart();

            }

 

Ojo con estas 2 líneas de código que hacen llamadas a 2 métodos auxiliares que vamos a utilizar IsAdmin() y Restart(), el primero devuelve true en caso de que la aplicación este ejecutándose con permisos de administrador y false en caso contrario y el otro método va a reiniciar la aplicación y a iniciarla con permisos de administrador

public static bool IsAdmin()

        {

            WindowsIdentity id = WindowsIdentity.GetCurrent();

            WindowsPrincipal p = new WindowsPrincipal(id);

            return p.IsInRole(WindowsBuiltInRole.Administrator);

        }

 

        public void Restart()

        {

            ProcessStartInfo startInfo = new ProcessStartInfo();

            startInfo.UseShellExecute = true;

            startInfo.CreateNoWindow = true;

            startInfo.WorkingDirectory = Environment.CurrentDirectory;

            startInfo.FileName = System.Windows.Forms.Application.ExecutablePath;

            startInfo.Verb = “runas”;

            try

            {

                Process p = Process.Start(startInfo);

            }

            catch(Exception e)

            {

                MessageBox.Show(e.Message);

            }

            System.Windows.Forms.Application.Exit();

        }

 

Con esto ya tenemos creado nuestro hotspot, así que a disfrutarlo, si te gustó o te sirvió de algo el tutorial no te olvides de dejar un comentario que siempre nos viene bien y nos ayuda a mejorar nuestro trabajo.

Share
Soy Ingeniero en Ciencias Informáticas, me encanta programar sobre todo en C# y Android

5 thoughts on “Como hacer mi propio hotspot

  1. pues muy bueno el artículo, sobre todo porque es un tutorial bastante bien explicado y sencillo de seguir… seguro que lo pruebo, ya les contaré…

    1. hola, esa es la forma que conozco de hacerlo en C#, si conoces otra seria bueno que la compartieras, los sockets son clases de java y quizas en java para hacer un hostpot tengas que utilizarlos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *