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:
MessageBox.Show("Não foi possível conectar a porta " + ((IPEndPoint)sock.RemoteEndPoint).Port.ToString());
Mas ele informa que como não esta conectado não posso chamar essa ação.
Alguém tem ideia de como resolver isso?