[英]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.