2010-08-17 137 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