Пример #1
0
        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);
            }
        }