Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alexandre Carmo

Teste de Socket

Recommended Posts

Boa tarde

Pessoal criei um código que faz a conexão em um ip e determinada porta, esta funcionando consigo conectar e quando ele não consegue me avisa que não é possível fazer a conexão, até aí ok.

O problema que estou tendo é que tenho um único ip e mesmo tem duas portas e quando uma delas não conecta eu consigo enviar que não foi possível conectar, mas não consigo identificar a porta, abaixo segue o código:

 

 private void conectarEDGE50()
        {
            try
            {
                if (m_sock != null && m_sock.Connected)
                {
                    m_sock.Shutdown(SocketShutdown.Both);
                    System.Threading.Thread.Sleep(10);
                    m_sock.Close();
                }

                if (m_sock2 != null && m_sock2.Connected)
                {
                    m_sock2.Shutdown(SocketShutdown.Both);
                    System.Threading.Thread.Sleep(10);
                    m_sock2.Close();
                }

                m_sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                m_sock2 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

                IPEndPoint epServer = new IPEndPoint(IPAddress.Parse(ip_edge50), Convert.ToInt32(porta1_edge50));
                IPEndPoint epServer2 = new IPEndPoint(IPAddress.Parse(ip_edge50), Convert.ToInt32(porta2_edge50));

                m_sock.Blocking = false;
                m_sock2.Blocking = false;

                AsyncCallback onconnect = new AsyncCallback(OnConnect);
               
                m_sock.BeginConnect(epServer, onconnect, m_sock);
                m_sock2.BeginConnect(epServer2, onconnect, m_sock2);
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.Message, "Falha ao conectar o EDGE50!");
            }
        }

public void OnConnect(IAsyncResult ar)
        {
            Socket sock = (Socket)ar.AsyncState;
            try
            {
                if (sock.Connected)
                    SetupRecieveCallback(sock);
                else
                   MessageBox.Show("Não foi possível conectar uma das antenas");

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Erro desconhecido");
            }
        }

Nesse caso no método OnConnect eu tentei avisar a porta que não conectou da seguinte forma:

 

Mas ele informa que como não esta conectado não posso chamar essa ação.
Alguém tem ideia de como resolver isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.