public void EnviarDatos(IPEndPoint id, string datos) { //Guarda Mensaje que envia servidor GuardarMensaje(Convert.ToString(DateTime.Now), nombre, datos); InfoCte cte = (InfoCte)clientes[id]; cte.socket.Send(Encoding.ASCII.GetBytes(datos)); }
private void LeerSocket() { IPEndPoint id = this.cteAct; byte[] buffer; InfoCte cte = (InfoCte)clientes[id]; int ret = 0; while (true) { if (cte.socket.Connected) { buffer = new byte[128]; try { ret = cte.socket.Receive(buffer, buffer.Length, SocketFlags.None); if (ret > 0) { cte.lastMsg = Encoding.ASCII.GetString(buffer); //Guarda mensaje que recive GuardarMensaje(Convert.ToString(DateTime.Now), cte.nick, cte.lastMsg); clientes[id] = cte; //Cada vez que lleguen datos. dispara este evento y dime de quien fue //this.DatosRecibidos(id, cte.nick); this.DatosRecibidos(id); } else { //si no, dispara este evento this.ConexionTerminada(id); break; } } catch (Exception ex) { if (!cte.socket.Connected) { //si ya no está conectado este socket, dispara este evento y dime de quien fue this.ConexionTerminada(id); break; } } } } CerrarThread(id); }
private void CerrarThread(IPEndPoint id) { InfoCte cte = (InfoCte)clientes[id]; try { cte.thread.Abort(); } catch (Exception ex) { lock (this) { clientes.Remove(id); } } }
private void LeerSocket() { IPEndPoint id = this.cteAct; byte[] buffer; //la direccion ip será el id y verificamos si esta conectado, si lo está recuperamos lo que tiene InfoCte cte = (InfoCte)clientes[id]; int ret = 0; while (true) { if (cte.socket.Connected) { buffer = new byte[128]; try { ret = cte.socket.Receive(buffer, buffer.Length, SocketFlags.None); if (ret > 0)//si tenemos datos { cte.lastMsg = Encoding.ASCII.GetString(buffer); clientes[id] = cte; //lazamos evento this.DatosRecibidos(id); } else { //si no me envia nada, mato el proceso this.ConexionTerminada(id); break; } } catch (Exception ex) { //metemos la siguiente validacion pero comprobamos si está conectado if (!cte.socket.Connected) { this.ConexionTerminada(id); break; } } } } CerrarThread(id); }
private void EsperarCliente() { //throw new NotImplementedException(); InfoCte cte = new InfoCte(); while (true) { cte.socket = tcpLsn.AcceptSocket(); this.cteAct = (IPEndPoint)cte.socket.RemoteEndPoint; cte.thread = new Thread(new ThreadStart(LeerSocket)); lock (this) { clientes.Add(cteAct, cte); } //Lanzamos un evento this.NuevaConexion(cteAct); cte.thread.Start(); } }
private void EsperarCliente() { InfoCte cte = new InfoCte(); while (true) { cte.socket = tcpLsn.AcceptSocket(); byte[] buffer = new byte[30]; //Recibimos el primer mensaje personalmente para guardarlo como nick int ret = cte.socket.Receive(buffer, SocketFlags.None); cte.nick = Encoding.ASCII.GetString(buffer); nombre_c = cte.nick; this.cteAct = (IPEndPoint)cte.socket.RemoteEndPoint; cte.thread = new Thread(new ThreadStart(LeerSocket)); lock (this) { clientes.Add(cteAct, cte); } //cada vez que alguien se conecte, dispara este evento y dale estos datos this.NuevaConexion(cteAct); //this.NuevaConexion(cteAct); cte.thread.Start(); } }
public void EnviarDatos(IPEndPoint id, string msg) { InfoCte cte = (InfoCte)clientes[id]; cte.socket.Send(Encoding.ASCII.GetBytes(msg)); }
public String ObtenerDatos(IPEndPoint id) { InfoCte cte = (InfoCte)clientes[id]; return(cte.lastMsg); }
public void Cerrar(IPEndPoint id) { InfoCte cte = (InfoCte)clientes[id]; cte.socket.Close(); }
public string ObtenerNick(IPEndPoint id) { InfoCte cte = (InfoCte)clientes[id]; return(cte.nick); }