Pregunta

VS 2008

Estoy usando el siguiente código para detectar si el cliente puede conectarse a nuestro servidor SIP. Esto estaba funcionando bien. Sin embargo, el cliente ha cambiado la red y ahora mi aplicación tiene que conectarse al servidor SIP desde detrás de un servidor proxy.

El error que obtengo es:

  

" Falló un intento de conexión porque la parte conectada no respondió correctamente después de un período de tiempo, o falló la conexión establecida porque el host conectado no respondió xxx.xxx.xx.xx: xx "

Este código funcionaba bien, hasta que tengo que conectarme detrás de un servidor proxy.

No pude ver ninguna propiedad allí. Puedo agregar la dirección proxy al socket.

¿Me estoy perdiendo algo?

Muchas gracias por cualquier sugerencia,

public bool IsSIPServerAvailable()
{
    bool isAvailable = true;
    Socket sock = new Socket(AddressFamily.InterNetwork,
                             SocketType.Stream,
                             ProtocolType.Tcp);

    try
    {
        sock.Connect("xxx.xxx.xx.xx", xx);
    }
    catch (SocketException ex)
    {
        Console.WriteLine(ex.Message);
        isAvailable = false;
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
        isAvailable = false;
    }
    finally
    {
        if (sock.Connected)
        {
            sock.Close();
        }
    }

    return isAvailable;
}
¿Fue útil?

Solución

Vea mi respuesta aquí , tal vez sea de ayuda. La idea general es establecer primero la conexión a un proxy y luego usar el comando HTTP CONNECT para abrir otra conexión TCP a un host y puerto determinados.

Otros consejos

Esto es muy similar a esta pregunta . No creo que sea posible crear una conexión de socket a través de un servidor proxy. Necesitaría algún tipo de protocolo y más, por lo general, los administradores configuran servidores proxy para rechazar las conexiones de puertos que no sean HTTP estándar, HTTPS.

Una solución sería utilizar la tunelización a través de HTTP.

La idea completa de un proxy es cambiar la topología de la red sin cambiar las aplicaciones. Por lo tanto, no es necesario cambiar la aplicación, pero se requiere un cambio en la configuración / configuración del proxy.

Para verificar la configuración del proxy independientemente de su aplicación, puede usar Telnet Host Port y ver si recibe el mismo mensaje de error / tiempo de espera o si se desconecta después de ingresar algunos caracteres.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top