private static void ReceiveCallback(IAsyncResult AR) { Socket socketListening = (Socket)AR.AsyncState; int bytesLidos; try { bytesLidos = socketListening.EndReceive(AR); } catch (SocketException) { Console.WriteLine("Client fechou conexão"); socketListening.Close(); clientSockets.Remove(socketListening); return; } var dadosGrafo = DeserializarDTO(); int noPartida = dadosGrafo.NoPartida; int noDestino = dadosGrafo.NoDestino; if (dadosGrafo.Operador == 1) { Console.WriteLine("Requisição de busca por nó!"); EnviarTexto(string.Format("Iniciando busca pelo no {0} partindo do nó {1}", noDestino, noPartida)); if (grafo.QntdVertices > noPartida && noPartida > 0) { var menorCaminho = BellmanFord.Buscar(grafo, noPartida, noDestino); EnviarTexto(string.Format(menorCaminho)); } else { EnviarTexto(string.Format("Não foi possível realizar a busca pois este nó de partida não existe no grafo!")); } } else if (dadosGrafo.Operador == 2) { Console.WriteLine("Requisição para solicitar roteamento!"); } else if (dadosGrafo.Operador == 3) { Console.WriteLine("Fechando conexão!"); FecharSockets(); Console.WriteLine("Conexão Finalizada!"); EnviarTexto("Conexão Finalizada!"); //avisa o client que foi encerrado a conexao } else { socketListening.BeginReceive(buffer, 0, BUFFER_SIZE, SocketFlags.None, ReceiveCallback, socketListening); } }