三门峡营销招聘网:我下载了一个程序,但为什么运行是错误的

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/01 01:56:40
import java.io.*;
import java.net.*;
/**
* 这个类实现了一个简单的单线程的代理服务器
*/
public class SimpleProxyServer {
/** 主函数解析参数并把参数传递给runServer */
public static void main(String[] args) throws IOException {
try {
// 检查参数的个数
if (args.length != 3)
throw new IllegalArgumentException("Wrong number of args.");

String host = args[0];
int remoteport = Integer.parseInt(args[1]);
int localport = Integer.parseInt(args[2]);
// 显示开始信息
System.out.println("Starting proxy for " + host + ":" +
remoteport + " on port " + localport);

runServer(host, remoteport, localport); // 永不返回
}
catch (Exception e) {
System.err.println(e);
System.err.println("Usage: java SimpleProxyServer " +
"<host> <remoteport> <localport>");
}
}

/**
* 这个方法运行一个单线程的代理服务器,它在指定的本地端口上
* 代理一个主机上的远程端口。它用不返回。
*/
public static void runServer(String host, int remoteport, int localport)
throws IOException {
// 创建一个ServerSocket来监听连接
ServerSocket ss = new ServerSocket(localport);

final byte[] request = new byte[1024];
byte[] reply = new byte[4096];

while(true) {

Socket client = null, server = null;
try {
// 等待一个本地端口的连接
client = ss.accept();

final InputStream from_client = client.getInputStream();
final OutputStream to_client = client.getOutputStream();

try { server = new Socket(host, remoteport); }
catch (IOException e) {
PrintWriter out = new PrintWriter(to_client);
out.print("Proxy server cannot connect to " + host + ":"+
remoteport + ":\n" + e + "\n");
out.flush();
client.close();
continue;
}

final InputStream from_server = server.getInputStream();
final OutputStream to_server = server.getOutputStream();

Thread t = new Thread() {
public void run() {
int bytes_read;
try {
while((bytes_read=from_client.read(request))!=-1) {
to_server.write(request, 0, bytes_read);
to_server.flush();
}
}
catch (IOException e) {}

try {to_server.close();} catch (IOException e) {}
}
};
// 开始客户端到服务器请求线程的运行
t.start();

int bytes_read;
try {
while((bytes_read = from_server.read(reply)) != -1) {
to_client.write(reply, 0, bytes_read);
to_client.flush();
}
}
catch(IOException e) {}
// 服务器关闭同我们的连接,那么我们关闭与客户端的连接
// 这将使另外一个线程退出
to_client.close();
}
catch (IOException e) { System.err.println(e); }
finally {
try {
if (server != null) server.close();
if (client != null) client.close();
}
catch(IOException e) {}
}
}
}
}

错误信息?