Ejemplo n.º 1
0
        private void EsperarCliente()
        {
            while (true)
            {
                // Cuando se recibe la conexión, guardo la información del cliente
                // Guardo el socket que utilizó para mantener la conexión con el cliente
                var socket = listener.AcceptSocket(); // Se queda esperando la conexión de un cliente

                // Guardo el RemoteEndPoint, que utilizo para identificar al cliente
                // Casteo a IPEndPoint para poder obtener la IP y el puerto del cliente
                var endPoint = socket.RemoteEndPoint as IPEndPoint;

                // Creo un thread para que se encargue de escuchar los mensajes del cliente.
                // Uso una función anónima para que el thread tenga acceso a la ip del cliente actual
                var thread = new Thread(() => LeerSocket(endPoint));
                thread.IsBackground = true;

                // Agrego la información del cliente al dictionary de clientes
                clientes[endPoint] = new InfoDeUnCliente()
                {
                    Socket = socket,
                    Thread = thread,
                };

                // Disparo el evento NuevaConexion
                NuevaConexion?.Invoke(this, new ServidorEventArgs(endPoint));

                // Inicio el thread encargado de escuchar los mensajes del cliente
                thread.Start();
            }
        }
Ejemplo n.º 2
0
 private void EsperarCliente()
 {
     while (true)
     {
         var cliente = default(InfoDeUnCliente);
         cliente.Socket   = _tcpLsn.AcceptSocket();
         _idClienteActual = (IPEndPoint)cliente.Socket.RemoteEndPoint;
         _clientes.Add(_idClienteActual, cliente);
         NuevaConexion?.Invoke(_idClienteActual);
         cliente.Task = Task.Run((() => LeerSocket()));
     }
 }
Ejemplo n.º 3
0
        private void EsperarCliente()
        {
            while (true)
            {
                Socket     socket   = listener.AcceptSocket(); // Se queda esperando la conexión de un cliente
                IPEndPoint endPoint = socket.RemoteEndPoint as IPEndPoint;

                Thread thread = new Thread(() => LeerSocket(endPoint));
                thread.IsBackground = true;

                clientes[endPoint] = new InfoDeUnCliente()
                {
                    Socket = socket,
                    Thread = thread,
                };

                // Disparo el evento NuevaConexion
                NuevaConexion?.Invoke(this, new ServidorEventArgs(endPoint));

                // Inicio el thread encargado de escuchar los mensajes del cliente
                thread.Start();
            }
        }