pooledconnectionhandler.java

来自「java socket基础编程实例」· Java 代码 · 共 69 行

JAVA
69
字号
   /*
	* Name of the Application     : PooledConnectionHandler.java
	* Development Environment     : Eclipse3.0M8
	* @Version 1.0
	* Describtion 
	* 
	*	1)ConnectionHandler for pool 
	*
	*
	* Creation / Modification History
	*	wsl	20:05 06/29/2004	Creation       
	*
	* Copyright ® 2004 www.cnlab.net
	* All right reserved. 
	*/
package net.cnlab.wsl.testsocket.pool;

import java.io.*;
import java.net.*;
import java.util.*;

public class PooledConnectionHandler implements Runnable {
	
	protected Socket connection;
	protected static List pool = new LinkedList();
	
	public PooledConnectionHandler() {
	}
	
	public void handleConnection() {
		try {
			PrintWriter streamWriter = new PrintWriter(connection.getOutputStream());
			BufferedReader streamReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
			String fileToRead = streamReader.readLine();
			BufferedReader fileReader = new BufferedReader(new FileReader(fileToRead));
			String line = null;
			while ((line = fileReader.readLine()) != null)
				streamWriter.println(line);
			fileReader.close();
			streamWriter.close();
			streamReader.close();
		} catch (FileNotFoundException e) {
			System.out.println("Could not find requested file on the server.");
		} catch (IOException e) {
			System.out.println("Error handling a client: " + e);
		}
	}
	public static void processRequest(Socket requestToHandle) {
		synchronized (pool) {
			pool.add(pool.size(), requestToHandle);
			pool.notifyAll();
		}
	}
	public void run() {
		while (true) {
			synchronized (pool) {
				while (pool.isEmpty()) {
					try {
						pool.wait();
					} catch (InterruptedException e) {
						return;
					}
				}
				connection = (Socket) pool.remove(0);
			}
			handleConnection();
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?