Question

VS 2008

J'utilise le code ci-dessous pour détecter si le client peut se connecter à notre serveur SIP. Cela fonctionnait bien. Cependant, le client a changé de réseau et mon application doit maintenant se connecter au serveur SIP derrière un serveur proxy.

L'erreur que je reçois est le:

  

"Une tentative de connexion a échoué parce que la partie connectée n'a pas répondu correctement après un certain temps, ou une connexion établie a échoué car l'hôte connecté n'a pas répondu. xxx.xxx.xx.xx: xx"

Ce code fonctionnait correctement jusqu'à ce que je me connecte derrière un serveur proxy.

Je ne voyais aucune propriété dans cet emplacement. Je peux ajouter l'adresse proxy au socket.

Est-ce que je manque quelque chose?

Merci beaucoup pour vos suggestions,

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;
}

Autres conseils

Cela est très similaire à cette question . Je ne pense pas qu'il soit possible de créer une connexion socket via un serveur proxy. Vous aurez besoin d’une sorte de protocole et plus, en général, les administrateurs configurent des serveurs proxy pour refuser les connexions depuis des ports autres que HTTP standard, HTTPS.

Une solution consisterait à utiliser le tunneling sur HTTP.

L’idée même d’un proxy est de changer la topologie du réseau sans changer les applications. Ainsi, il n'est pas nécessaire de modifier l'application, mais une modification est requise dans la configuration / installation du proxy.

Pour vérifier la configuration du proxy indépendamment de votre application, vous pouvez utiliser Port hôte Telnet et voir si vous obtenez le même message de dépassement de délai / d'erreur ou si vous vous déconnectez après la saisie de quelques caractères.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top