1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

erro em desligar 1 sockets [cliente-servidor] e voltar na mesma porta a ligar em C#

Ola a todos, eu tenho uma duvida em desconetar uma ligação entre 2 sockets para um cliente - servidor e depois ao criar um novo cliente, ao tentar conetar ao mesmo servidor diz que estou a aceder uma ligação de socket ja conetado , na logica, devia desconetar e depois reconetar

tenho esse codigo em baixo, que serve para desconetar o cliente e liberta o socket para novo ligação

 /// <summary>
    /// Metodo que disconecta o servidor scv
    /// </summary>
    /// <param name="numero"></param>
    private void sairDoServidor(string numero_aux)
    {
        Console.WriteLine("\n\t\t+-------------------------------------------------------+");
        Console.WriteLine("\t\t|     MENU SERVIDOR SRE - DESCONETAR O SERVIDOR SCV     |");
        Console.WriteLine("\t\t+-------------------------------------------------------+");

        removerServidorSCV(numero_aux);//remover os dados contidos na listaPorSocket
        try
        {
           socket.Shutdown(SocketShutdown.Both);//libera o servidor
        }
          catch (Exception e)
        {
           Console.WriteLine(e.ToString());
        }
        socket.Close(); //fechar o servidor

        if (socket.Connected)
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("\n>> O servidor SCV ainda esta conetado ao servidor SRE.\n");
            Console.ForegroundColor = ConsoleColor.White;
        }
        else
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("\n>> O servidor SCV desconectou do servidor SRE.\n");
            Console.ForegroundColor = ConsoleColor.White;
        }
    }


    /// <summary>
    /// Metodo auxilar que disconecta o servidor scv do servidor sre
    /// </summary>
    /// <param name="numero"></param>
    /// 
    private void removerServidorSCV(string numero_aux)
    {
        foreach (Voto v in listaDeVotos)
        {
            if (numero_aux.Equals(Convert.ToString(v.Partido.IDPartido)))
            {
                v.Login = false;

                for (int i = 0; i < listaPorSocket.Count; i++)
                {
                    if (numero_aux.Equals(Convert.ToString(listaPorSocket[i].Voto.Partido.IDPartido)))
                    {
                        listaPorSocket.Remove(listaPorSocket[i]);
                        break;
                    }
                }
            }
        }
    }

como podem visualizar nesta imagem, aqui o servidor é desconetado de acordo com o codigo acima https://www.filepicker.io/api/file/jPtJzcOvSUKAGlIivZi4

e aqui é quando tento conetar outra vez ao mesmo servidor e dá erro a dizer que estou a conetar num servidor já ligado, https://www.filepicker.io/api/file/faF8AlXESV2Q3X6AHCkA

já tentei usar o

socket.Disconnect(true);//desconetar a ligação

e mesmo assim, não dá alguma orientação, eu agradecia.

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags sockets visual-studio ou faça a sua própria pergunta.