具体思路:生成2个socketServer、socketClient,分别伪装成 http服务器,和浏览器 socketClient去连http服务器(如:百度),
 真正的浏览器里写入//127.0.0.1:10000,然后就连接到socketServer,
 socketServer就把所有的数据(请求)都转给socketClient,socketClient去跟真正的http服务器通信
 socketClient获得的数据在转发给socketServer;
 等于所有的数据都在我的程序里过了下,充当已个传话筒的功能(然后我就可以对进过的数据动手脚了) 请问可以实现吗? 我写了个程序,可以转发自己写的一简单Socket C/S模式的聊天室之间的字符串数据,但是把他用到网页上就不行了
 
 以下是代码,创建2个线分别负责转发客户端->服务器、服务器->客户端的数据,请高人指点!!!
import java.io.*; 
import java.net.*; public class TransPacket

private static final int SERVER_PORT = 10000; 
private static final int HTTP_PORT = 80; 
private static final String HTTP_IP = "119.75.217.56"; //我这边百度解析出来的地址
//private static final String HTTP_IP = "127.0.0.1"; 

private ServerSocket ss; 
private Socket socketConnectClient;
private Socket socketConnectServer; public TransPacket() 

try 

ss = new ServerSocket(SERVER_PORT); 
socketConnectClient = ss.accept();
socketConnectServer = new Socket(HTTP_IP,HTTP_PORT);
if (socketConnectServer.isConnected())
System.out.println("connect server!");
else
System.out.println("connect false!");
Thread t1 = new send2client_Thread(socketConnectServer,socketConnectClient);
Thread t2 = new send2server_Thread(socketConnectClient,socketConnectServer);
while(true)
{
if (t1.isInterrupted() || t2.isInterrupted())
break;
}



catch (IOException e) 
{} 
}
public static void main(String[] args) throws IOException 

new TransPacket(); 
} }import java.net.*;
import java.io.*;public class send2client_Thread extends Thread { Socket server;
Socket client; public send2client_Thread(Socket ss,Socket sc)
{
server = ss;
client = sc;
start();
} public void run()
{
while(true)
{
try{
byte[] byteArray = new byte[16];
server.getInputStream().read(byteArray);
PrintStream out = new PrintStream(client.getOutputStream(),true); if (byteArray != null)
{
System.out.println("server to client:" + toHex(byteArray));
//System.out.println(byteArray.toString());
out.write(byteArray);
}

//读取server的输出流
//修改输出流
//写入client的输入流
//发送client

}catch (IOException e)
{
System.out.println("err:"+e);
}

}
}

public   String   toHex(byte[]   buf)   

String s = "";
for(int i = 0; i < buf.length; i++)
{
int   n   =   buf[i]   >=   0   ?   buf[i]   :   256   +   buf[i]; 
String   str   =   Integer.toHexString(n); 
if (str.length() < 2)
str = "0"+str;
s = s + str.toUpperCase() + " "; 
}
return s;
}
}
import java.net.*;
import java.io.*;public class send2server_Thread extends Thread { Socket server;
Socket client;

public send2server_Thread(Socket sc,Socket ss)
{
client = sc;
server = ss;
start();
} public void run()
{
while(true)
{

try
{
byte[] byteArray = new byte[16];
client.getInputStream().read(byteArray);
PrintStream out = new PrintStream(server.getOutputStream(),true); if (byteArray != null)
{
System.out.println("client to server:" + toHex(byteArray));
//System.out.println(byteArray.toString());
out.write(byteArray);
}
//读取cliet的输出流
//修改输出流
//写入server的输入流
//发送server
}
catch(IOException e)
{
System.out.println("err:"+e);
}

}
}

public   String   toHex(byte[]   buf)   

String s = "";
for(int i = 0; i < buf.length; i++)
{
int   n   =   buf[i]   >=   0   ?   buf[i]   :   256   +   buf[i]; 
String   str   =   Integer.toHexString(n); 
if (str.length() < 2)
str = "0"+str;
s = s + str.toUpperCase() + " "; 
}
return s;
}
}