2010-08-17 140 views
0

寫在JAVA隧道通過HTTP

林創建連接到代理,然後隧穿到另一臺服務器發送TCP數據包的程序,這是我的代碼:

{ 
Socket skt = new Socket(proxy_address, proxy_port); 
PrintStream myOutput = new PrintStream(skt.getOutputStream()); 

String Request = "CONNECT " + host + ":" + 443 + " HTTP/1.0"; 
String host3 = "Host: " + host + ":" + 443; 
myOutput.println(Request + "\r\n" + host3); 
} 

試圖找到爲什麼我沒有得到代理服務器的響應。

+2

你的代碼是什麼語言。它看起來像Java,但要確保你應該用正在使用的語言來標記你的問題。 – jigfox 2010-08-17 19:12:44

回答

0

您還需要兩個行尾 - 一個表示Host:標頭的末尾,一個表示連接請求結束的空行。試試:

myOutput.println(Request + "\r\n" + host3 + "\r\n\r\n"); 
+0

謝謝,作品像一個魅力 – Masterban 2010-08-18 06:12:04

+0

我實際上有一個問題,當我開始發送數據包我想服務器我需要做什麼特別的事情嗎?像在最後加入空行? – Masterban 2010-08-18 06:18:24

+0

@Masterban:不,當你從服務器讀取響應頭文件(用空行終止)後,如果響應代碼是200,那麼你將與另一邊有一個原始連接。 – caf 2010-08-18 06:29:10

0

你也可以試試看corkscrewProxytunnel,雖然這些基本上都是SSH over HTTP(S)代理。

+0

程序是在java大聲笑 – Masterban 2010-08-17 19:24:49

+0

你仍然可以使用這些程序來檢查數據包通過HTTP傳輸如何工作... – plaes 2010-08-18 03:46:20