private void Disconnect() { try { Protocolo msgToSend = new Protocolo(); msgToSend.strMensagem = null; msgToSend.strElemento = null; msgToSend.cmdAcao = Acao.Desconectar; byte[] b = msgToSend.ToByte(); foreach (Socket socket in clientList) { socket.BeginSend(b, 0, b.Length, SocketFlags.None, new AsyncCallback(OnSend), socket); } this.serverSocket.Disconnect(false); this.serverSocket.Close(); } catch (ObjectDisposedException) { } catch (Exception ex) { MessageBox.Show(ex.Message, "Servidor FormClosing", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void OnReceive(IAsyncResult ar) { try { Socket clientSocket = (Socket)ar.AsyncState; clientSocket.EndReceive(ar); Protocolo msgReceived = new Protocolo(byteData); Protocolo msgToSend = new Protocolo(); byte[] msg = new byte[1024]; string elemento = msgReceived.strElemento; string acao = msgReceived.cmdAcao.ToString(); msgToSend.strElemento = elemento; msgToSend.cmdAcao = msgReceived.cmdAcao; msgToSend.strMensagem = null; if (acao == "Abrir") { switch (elemento) { case "Janela 1": if (this.estadoElementos.eeJanela1 == "Aberta") { msgToSend.strMensagem = "A Janela 1 já está aberta!"; } else { try { this.pnJanela1.BackgroundImage = Image.FromFile(@"imagens/janelaAberta.gif"); msgToSend.strMensagem = "A " + elemento + " foi aberta!"; this.estadoElementos.eeJanela1 = "Aberta"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!", "Servidor"); } } break; case "Janela 2": if (this.estadoElementos.eeJanela2 == "Aberta") { msgToSend.strMensagem = "A " + elemento + " já está aberta!"; } else { try { this.pnJanela2.BackgroundImage = Image.FromFile(@"imagens/janelaAberta.gif"); msgToSend.strMensagem = "A " + elemento + " foi aberta!"; this.estadoElementos.eeJanela2 = "Aberta"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!", "Servidor"); } } break; case "Janela 3": try { this.pnJanela3.BackgroundImage = Image.FromFile(@"imagens/janelaAberta.gif"); msgToSend.strMensagem = "A " + elemento + " foi aberta!"; this.estadoElementos.eeJanela3 = "Aberta"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!","Servidor"); } break; case "Janela 4": try { this.pnJanela4.BackgroundImage = Image.FromFile(@"imagens/janelaAberta.gif"); msgToSend.strMensagem = "A " + elemento + " foi aberta!"; this.estadoElementos.eeJanela4 = "Aberta"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!","Servidor"); } break; case "Janela 5": try { this.pnJanela5.BackgroundImage = Image.FromFile(@"imagens/janelaAberta.gif"); msgToSend.strMensagem = "A " + elemento + " foi aberta!"; this.estadoElementos.eeJanela5 = "Aberta"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!","Servidor"); } break; case "Janela 6": try { this.pnJanela6.BackgroundImage = Image.FromFile(@"imagens/janelaAberta.gif"); msgToSend.strMensagem = "A " + elemento + " foi aberta!"; this.estadoElementos.eeJanela6 = "Aberta"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!","Servidor"); } break; case "Janela 7": try { this.pnJanela7.BackgroundImage = Image.FromFile(@"imagens/janelaAberta.gif"); msgToSend.strMensagem = "A " + elemento + " foi aberta!"; this.estadoElementos.eeJanela7 = "Aberta"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!","Servidor"); } break; case "Janela 8": try { this.pnJanela8.BackgroundImage = Image.FromFile(@"imagens/janelaAberta.gif"); msgToSend.strMensagem = "A " + elemento + " foi aberta!"; this.estadoElementos.eeJanela8 = "Aberta"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!","Servidor"); } break; case "Porta 1": try { this.pnPorta1.BackgroundImage = Image.FromFile(@"imagens/portaAberta.gif"); msgToSend.strMensagem = "A " + elemento + " foi aberta!"; this.estadoElementos.eePorta1 = "Aberta"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!", "Servidor"); } break; case "Porta 2": try { this.pnPorta2.BackgroundImage = Image.FromFile(@"imagens/portaAberta.gif"); msgToSend.strMensagem = "A " + elemento + " foi aberta!"; this.estadoElementos.eePorta2 = "Aberta"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!", "Servidor"); } break; } } if (acao == "Fechar") { switch (elemento) { case "Janela 1": try { this.pnJanela1.BackgroundImage = Image.FromFile(@"imagens/janelaFechada.gif"); msgToSend.strMensagem = "A " + elemento + " foi fechada!"; this.estadoElementos.eeJanela1 = "Fechada"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!","Servidor"); } break; case "Janela 2": try { this.pnJanela2.BackgroundImage = Image.FromFile(@"imagens/janelaFechada.gif"); msgToSend.strMensagem = "A " + elemento + " foi fechada!"; this.estadoElementos.eeJanela2 = "Fechada"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!","Servidor"); } break; case "Janela 3": try { this.pnJanela3.BackgroundImage = Image.FromFile(@"imagens/janelaFechada.gif"); msgToSend.strMensagem = "A " + elemento + " foi fechada!"; this.estadoElementos.eeJanela3 = "Fechada"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!","Servidor"); } break; case "Janela 4": try { this.pnJanela4.BackgroundImage = Image.FromFile(@"imagens/janelaFechada.gif"); msgToSend.strMensagem = "A " + elemento + " foi fechada!"; this.estadoElementos.eeJanela4 = "Fechada"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!","Servidor"); } break; case "Janela 5": try { this.pnJanela5.BackgroundImage = Image.FromFile(@"imagens/janelaFechada.gif"); msgToSend.strMensagem = "A " + elemento + " foi fechada!"; this.estadoElementos.eeJanela5 = "Fechada"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!","Servidor"); } break; case "Janela 6": try { this.pnJanela6.BackgroundImage = Image.FromFile(@"imagens/janelaFechada.gif"); msgToSend.strMensagem = "A " + elemento + " foi fechada!"; this.estadoElementos.eeJanela6 = "Fechada"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!","Servidor"); } break; case "Janela 7": try { this.pnJanela7.BackgroundImage = Image.FromFile(@"imagens/janelaFechada.gif"); msgToSend.strMensagem = "A " + elemento + " foi fechada!"; this.estadoElementos.eeJanela7 = "Fechada"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!","Servidor"); } break; case "Janela 8": try { this.pnJanela8.BackgroundImage = Image.FromFile(@"imagens/janelaFechada.gif"); msgToSend.strMensagem = "A " + elemento + " foi fechada!"; this.estadoElementos.eeJanela8 = "Fechada"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!","Servidor"); } break; case "Porta 1": try { this.pnPorta1.BackgroundImage = Image.FromFile(@"imagens/portaFechada.gif"); msgToSend.strMensagem = "A " + elemento + " foi fechada!"; this.estadoElementos.eePorta1 = "Fechada"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!", "Servidor"); } break; case "Porta 2": try { this.pnPorta2.BackgroundImage = Image.FromFile(@"imagens/portaFechada.gif"); msgToSend.strMensagem = "A " + elemento + " foi fechada!"; this.estadoElementos.eePorta2 = "Fechada"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!", "Servidor"); } break; } } if(acao == "Travar") { switch (elemento) { case "Janela 1": if (this.estadoElementos.eeJanela1 == "Aberta") { msgToSend.strMensagem = "Para travar a janela, ela precisa estar fechada!"; } else { try { this.pnJanela1.BackgroundImage = Image.FromFile(@"imagens/janelaTravada.gif"); msgToSend.strMensagem = "A " + elemento + " foi travada!"; this.estadoElementos.eeJanela1 = "Travada"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!", "Servidor"); } } break; case "Janela 2": if (this.estadoElementos.eeJanela2 == "Aberta") { msgToSend.strMensagem = "Para travar a janela, ela precisa estar fechada!"; } else { try { this.pnJanela2.BackgroundImage = Image.FromFile(@"imagens/janelaTravada.gif"); msgToSend.strMensagem = "A " + elemento + " foi travada!"; this.estadoElementos.eeJanela2 = "Travada"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!", "Servidor"); } } break; case "Janela 3": if (this.estadoElementos.eeJanela3 == "Aberta") { msgToSend.strMensagem = "Para travar a janela, ela precisa estar fechada!"; } else { try { this.pnJanela3.BackgroundImage = Image.FromFile(@"imagens/janelaTravada.gif"); msgToSend.strMensagem = "A " + elemento + " foi travada!"; this.estadoElementos.eeJanela3 = "Travada"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!", "Servidor"); } } break; case "Janela 4": if (this.estadoElementos.eeJanela4 == "Aberta") { msgToSend.strMensagem = "Para travar a janela, ela precisa estar fechada!"; } else { try { this.pnJanela4.BackgroundImage = Image.FromFile(@"imagens/janelaTravada.gif"); msgToSend.strMensagem = "A " + elemento + " foi travada!"; this.estadoElementos.eeJanela4 = "Travada"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!", "Servidor"); } } break; case "Janela 5": if (this.estadoElementos.eeJanela5 == "Aberta") { msgToSend.strMensagem = "Para travar a janela, ela precisa estar fechada!"; } else { try { this.pnJanela5.BackgroundImage = Image.FromFile(@"imagens/janelaTravada.gif"); msgToSend.strMensagem = "A " + elemento + " foi travada!"; this.estadoElementos.eeJanela5 = "Travada"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!", "Servidor"); } } break; case "Janela 6": if (this.estadoElementos.eeJanela6 == "Aberta") { msgToSend.strMensagem = "Para travar a janela, ela precisa estar fechada!"; } else { try { this.pnJanela6.BackgroundImage = Image.FromFile(@"imagens/janelaTravada.gif"); msgToSend.strMensagem = "A " + elemento + " foi travada!"; this.estadoElementos.eeJanela6 = "Travada"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!", "Servidor"); } } break; case "Janela 7": if (this.estadoElementos.eeJanela7 == "Aberta") { msgToSend.strMensagem = "Para travar a janela, ela precisa estar fechada!"; } else { try { this.pnJanela7.BackgroundImage = Image.FromFile(@"imagens/janelaTravada.gif"); msgToSend.strMensagem = "A " + elemento + " foi travada!"; this.estadoElementos.eeJanela7 = "Travada"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!", "Servidor"); } } break; case "Janela 8": if (this.estadoElementos.eeJanela8 == "Aberta") { msgToSend.strMensagem = "Para travar a janela, ela precisa estar fechada!"; } else { try { this.pnJanela8.BackgroundImage = Image.FromFile(@"imagens/janelaTravada.gif"); msgToSend.strMensagem = "A " + elemento + " foi travada!"; this.estadoElementos.eeJanela8 = "Travada"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!", "Servidor"); } } break; case "Porta 1": if (this.estadoElementos.eePorta1 == "Aberta") { msgToSend.strMensagem = "Para travar a porta, ela precisa estar fechada!"; } else { try { this.pnPorta1.BackgroundImage = Image.FromFile(@"imagens/portaTravada.gif"); msgToSend.strMensagem = "A " + elemento + " foi travada!"; this.estadoElementos.eeJanela8 = "Travada"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!", "Servidor"); } } break; case "Porta 2": if (this.estadoElementos.eePorta2 == "Aberta") { msgToSend.strMensagem = "Para travar a porta, ela precisa estar fechada!"; } else { try { this.pnPorta2.BackgroundImage = Image.FromFile(@"imagens/portaTravada.gif"); msgToSend.strMensagem = "A " + elemento + " foi travada!"; this.estadoElementos.eeJanela8 = "Travada"; } catch (System.IO.FileNotFoundException) { MessageBox.Show("Imagem não encontrada!", "Servidor"); } } break; } } if (acao == "Desconectar") { int indice = 0; foreach(Socket socket in clientList) { if(socket == clientSocket) { this.clientList.RemoveAt(indice); break; } ++indice; } clientSocket.Close(); MessageBox.Show("Um cliente desconectou...", "Servidor"); } else { msg = msgToSend.ToByte(); foreach (Socket socket in clientList) { socket.BeginSend(msg, 0, msg.Length, SocketFlags.None, new AsyncCallback(OnSend), socket); } clientSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(OnReceive), clientSocket); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Servidor OnReceive", MessageBoxButtons.OK, MessageBoxIcon.Error); } }