我写了个三个类,一个监听服务器类Listener,一个服务请求处理类Handler,一个服务请求类Runner。
想要用Runner发送请求,Listener收到请求后交给Handler处理,Handler再返回一组数据给Runner,
现在Listener收到请求后就执行不下去了,大神们帮忙看下。
代码
Listener.java
public class Listener implements Runnable {
private static final int poolSize = Runtime.getRuntime()
.availableProcessors();
ExecutorService service;
ServerSocket server;
public Listener(int port) throws IOException {
server = new ServerSocket(port);
service = Executors.newFixedThreadPool(poolSize);
}
public static void main(String[] args) {// 启动监听服务器
try {
Thread t = new Thread(new Listener(9528));
t.start();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void run() {
Socket in;
while (true) {// 一直等待新请求进来
try {
in = server.accept();// 获取请求
System.out.println("有新请求进来");
service.submit(new Handler(in));// 处理请求
} catch (IOException e) {
e.printStackTrace();
service.shutdown();
}
}
}
}
Handler.java
public class Handler implements Runnable {
private Socket socket;
public Handler(Socket in) {
this.socket = in;
}
@Override
public void run() {
try {
BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println(br.readLine());
OutputStream out = socket.getOutputStream();
out.write(new String(System.currentTimeMillis()+"").getBytes());
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Runner.java
public class Runner {
public static void main(String[] args) throws UnknownHostException, IOException {
for(int i =0 ;i<10;i++){
Socket s = new Socket(InetAddress.getLocalHost(),9528);
BufferedReader reader=new BufferedReader(new InputStreamReader(s.getInputStream()));
System.out.println(reader.readLine());
OutputStream out=s.getOutputStream();
out.write(new String("request"+i).getBytes());
out.flush();
}
}
}