📄 multithreadserver.java
字号:
//package com.liwei.JavaSocket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.*;
public class MultiThreadServer {
/**
* @param args
*/
private int port = 8821;
private ServerSocket serverSocket = null;
private ExecutorService executorService = null;
private final int POOL_SIZE = 10;
public MultiThreadServer() throws IOException{
serverSocket = new ServerSocket(port);
executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()*POOL_SIZE);
System.out.println("服务器启动");
}
public void service(){
while(true){
Socket socket = null;
try {
socket = serverSocket.accept();
executorService.execute(new Handler(socket));
} catch (IOException e) {
System.err.println(e.getMessage());
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
new MultiThreadServer().service() ;
} catch (IOException e) {
System.err.println(e.getMessage());
}
}
}
class Handler implements Runnable{
private Socket socket = null ;
public Handler(Socket _socket){
this.socket = _socket ;
}
private PrintWriter getWrite(Socket socket) throws IOException{
OutputStream socketOut = socket.getOutputStream();
return new PrintWriter(socketOut,true);
}
private BufferedReader getReader(Socket socket) throws IOException{
InputStream socketReader = socket.getInputStream();
return new BufferedReader(new InputStreamReader(socketReader));
}
public String echo(String msg){
return "echo :" + msg ;
}
public void run() {
// TODO Auto-generated method stub
System.out.println("New Connection accepted" + socket.getInetAddress() +":" + socket.getPort());
try {
BufferedReader br = this.getReader(socket);
PrintWriter pw = this.getWrite(socket);
String msg = null ;
while((msg=br.readLine()) != null){
System.out.println("" + msg );
pw.print(echo(msg));
if(msg.equals('q')){
break ;
}
}
} catch (IOException e) {
System.out.println(e.getMessage());
} finally{
if(socket != null){
try {
socket.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -