Hola, buenas, tengo un servidor y un cliente (o varios depende), en un servidor tengo un label que muestra cuando se conecta un cliente y aumenta un entero diciendo cuantos hay conectados, tambien se habilitan controles, etc.
Tengo este codigo en el servidor
label1.Text = "Existen " + usuariosNum + " conectados"; cliente = new UdpClient(12000); receptor = new IPEndPoint(new IPAddress(0), 0); Thread lectura = new Thread(new ThreadStart(EjecutarServidor)); lectura.Start(); public void EjecutarServidor() { while(true) { byte[] datos = cliente.Receive(ref receptor); string numero = Convert.ToString(receptor); if (numero == "127.0.0.1:50000") { usuariosNum++; Invoke(new Action(() => label1.Text = "Existen " + usuariosNum + " conectados")); Invoke(new Action(() =>button1.Enabled = true)); } if (numero == "127.0.0.1:50001") { usuariosNum++; Invoke(new Action(() => label1.Text = "Existen " + usuariosNum + " conectados")); } if(numero=="cerrar") { usuariosNum--; Invoke(new Action(() => label1.Text = "Existen " + usuariosNum + " conectados")); Invoke(new Action(() => button1.Enabled = false)); } } }
y este en el cliente
receptor = new IPEndPoint(new IPAddress(0), 0); cliente = new UdpClient(50000); byte[] datos = Encoding.ASCII.GetBytes("127.0.0.1:50000"); cliente.Send(datos,datos.Length, "127.0.0.1", 12000);
Quisiera poder hacer dos cosas
1) Cuando ejecuto un cliente, como puedo mostrar un label o algo que me diga que el servidor no esta iniciado y que cuando detecte al servidor ya en linea, mande esos datos (lo digo porque cuando inicio el servidory despues el cliente, me manda la informacion correcta, pero cuando inicio el cliente antes que el servidor no manda el dato o el dato lo mando al "vacio")
2)Como puedo implementar que cuando cierro algun cliente (form se cierra) le diga al servidor o el servidor se de cuenta que ya no esta en linea y descuente el numero de usuarios en linea.
Muchas gracias por la ayuda brindada.