⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multithreadserver.java

📁 java课后题的详细答案
💻 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 + -