簡體   English   中英

C#套接字:通過代理服務器連接到服務器

[英]C# Socket: connect to server through proxy server

VS 2008

我正在使用下面的代碼來檢測客戶端是否可以連接到我們的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;
}

在這里查看我的答案,也許會有所幫助。 總體思路是先建立與代理的連接,然后使用HTTP CONNECT命令打開與給定主機和端口的另一個TCP連接。

這與這個問題非常相似。 我認為不可能通過代理服務器創建套接字連接。 您將需要某種協議,而且,通常,管理員會設置代理服務器以拒絕來自除標准HTTP,HTTPS以外的端口的連接。

一種解決方案是通過HTTP使用隧道。

代理的整個想法是在不更改應用程序的情況下更改網絡拓撲。 因此,無需更改應用程序,但是需要在代理配置/設置中進行更改。

要獨立於應用程序檢查代理配置,可以使用Telnet Host Port ,查看是否收到相同的超時/錯誤消息,或者輸入幾個字符后是否斷開連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM