2009-05-04 30 views
2

VS 2008C#ソケット:プロキシサーバー経由でサーバーに接続

以下のコードを使用して、クライアントがSIPサーバーに接続できるかどうかを検出しています。これはうまくいきました。しかし、クライアントがネットワークを変更したので、アプリケーションはプロキシサーバーの背後からSIPサーバーに接続する必要があります。接続されたホストは、xxx.xxxの応答に失敗したため、接続先が適切に一定期間後に応答しなかった、または確立された接続が失敗したため、

は、」接続の試みが失敗しました:

私が手にエラーがあります.xx.xx:xx "

このコードは、プロキシサーバーの背後から接続するまで、正常に機能していました。

そこにプロパティが表示されませんでした。ソケットにプロキシアドレスを追加できます。

何か不足していますか?任意の提案のための

多くのおかげで、

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

答えて

3

私の答えを参照してくださいhere、おそらくそれが役に立ちます。一般的な考え方は、最初にプロキシへの接続を確立し、HTTP CONNECTコマンドを使用して、指定されたホストとポートへの別のTCP接続をオープンすることです。

1

これは、このquestionと非常によく似ています。私はそれがプロキシサーバーを介してソケット接続を作成することは可能だとは思わない。何らかのプロトコルが必要になります。通常、管理者は標準のHTTP、HTTPS以外のポートからの接続を拒否するようにプロキシサーバーを設定します。

解決策の1つは、HTTP経由のトンネリングを使用することです。

1

プロキシの考え方全体は、アプリケーションを変更せずにネットワークトポロジを変更することです。したがって、アプリを変更する必要はありませんが、プロキシ設定/設定に変更が必要です。

アプリケーションとは独立してプロキシ設定を確認するには、Telnet Host Portを使用して、同じタイムアウト/エラーメッセージが表示されるか、数文字を入力した後に切断されるかどうかを確認してください。

関連する問題