服务器代码如下:
import java.io.*;
import java.net.*;
public class ProxyServer extends Thread
{
private ServerSocket ss;
public ProxyServer() throws IOException
{
ss = new ServerSocket(2008,1);
}
public static void main(String[] args) throws Exception
{
ProxyServer server1=new ProxyServer();
server1.start();
}
public void run()
{
while(true)
{
Socket connectionSocket;
try
{
connectionSocket = ss.accept();
BufferedReader inFromClient=new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
String str=inFromClient.readLine(); System.out.println(str);
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
那么,但我在浏览器中使用代理,IE输入www.sina.com.cn的时候,有反应,在Firefox中输入www.163.com也有反应。这说明多线程起作用了?
当www.sina.com.cn进来的时候,run中执行。。
当www.163.com 进来的时候,run 又开辟了一个新的线程还是什么的处理他???否则怎么理解?
import java.io.*;
import java.net.*;
public class ProxyServer extends Thread
{
private ServerSocket ss;
public ProxyServer() throws IOException
{
ss = new ServerSocket(2008,1);
}
public static void main(String[] args) throws Exception
{
ProxyServer server1=new ProxyServer();
server1.start();
}
public void run()
{
while(true)
{
Socket connectionSocket;
try
{
connectionSocket = ss.accept();
BufferedReader inFromClient=new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
String str=inFromClient.readLine(); System.out.println(str);
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
那么,但我在浏览器中使用代理,IE输入www.sina.com.cn的时候,有反应,在Firefox中输入www.163.com也有反应。这说明多线程起作用了?
当www.sina.com.cn进来的时候,run中执行。。
当www.163.com 进来的时候,run 又开辟了一个新的线程还是什么的处理他???否则怎么理解?
try {
Socket connectionSocket = socket.accept();
new HandleSession(socket).start(); //HandleSession是处理线程, 单独处理IO
} catch (Exception ioe) {
}
}
try {
Socket connectionSocket = socket.accept();
new HandleSession(connectionSocket).start(); //HandleSession是处理线程, 单独处理IO
} catch (Exception ioe) {
}
}
但是,既然现在是单线程的,为什么却能够同时响应 sina 和 163 这两个请求呢?
{
Socket connectionSocket;
try
{
connectionSocket = ss.accept();
// 输出此连接的数据