2009-05-04 12 views
2

VS 2008C# Socket: connecter au serveur via un serveur proxy

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 maintenant mon application doit se connecter au serveur SIP derrière un serveur proxy.

L'erreur que je reçois est le:

« Une tentative de connexion a échoué car le parti connecté n'a pas répondu correctement après une période de temps, ou une connexion établie a échoué car l'hôte de connexion n'a pas répondu xxx.xxx .xx.xx: xx "

Ce code fonctionnait bien, jusqu'à ce que je doive me connecter derrière un serveur proxy.

Je ne pouvais pas voir de propriétés ici Je peux ajouter l'adresse proxy à la socket.

Ai-je raté quelque chose?

Un grand merci pour toutes les 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; 
} 

Répondre

3

Voir ma réponse here, ce sera peut-être utile. L'idée générale est d'établir d'abord une connexion à un proxy, puis d'utiliser la commande HTTP CONNECT pour ouvrir une autre connexion TCP à un hôte et un port donnés.

1

Ceci est très similaire à ce question. Je ne pense pas qu'il soit possible de créer une connexion socket via un serveur proxy. Vous auriez besoin d'une sorte de protocole et plus encore, en général, les administrateurs mettent en place des serveurs proxy pour refuser les connexions à partir de ports autres que HTTP, HTTPS.

Une solution consisterait à utiliser le tunneling sur HTTP.

1

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

Pour vérifier la configuration du proxy indépendamment de votre application, vous pouvez utiliser Telnet Host Port et voir si vous obtenez le même message timeout/error ou si vous êtes déconnecté après avoir entré quelques caractères.

Questions connexes