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

📄 threadedserver.java

📁 卡耐基SSD8 ex1.答案。不错哦。欢迎下载
💻 JAVA
字号:
import java.net.*;
import java.util.StringTokenizer;
import java.io.*;

class Handler implements Runnable {

	private Socket socket;

	public Handler(Socket s) {

		Thread t;
		socket = s;
		t = new Thread(this, "Handler Thread");
		t.start();
	}

	public void run() {
		try {

			BufferedReader inFromClient = new BufferedReader(
					new InputStreamReader(socket.getInputStream()));

			String requestMessageLine;
			requestMessageLine = inFromClient.readLine();

			// Process the request
			StringTokenizer tokenizedLine = new StringTokenizer(
					requestMessageLine);

			if (tokenizedLine.nextToken().equals("GET")) {

				String filename;
				// Parse URL to retrieve file name
				filename = tokenizedLine.nextToken();

				if (filename.startsWith("/") == true)
					filename =  filename.substring(1);

				File file = new File(filename);
				int numOfBytes = (int) file.length();

				FileInputStream inFile = new FileInputStream(filename);

				byte[] fileInBytes = new byte[numOfBytes];
				inFile.read(fileInBytes);
				
				DataOutputStream outToClient = new DataOutputStream(socket
						.getOutputStream());

				outToClient.writeBytes("Header\n" + "HTTP/1.0 200 OK\n"
						+ "Server: SSD8Server/1.0\n");
				if (filename.endsWith(".jpg")) {
					outToClient.writeBytes("Content-type: image/jpeg\n");
				}
				if (filename.endsWith(".gif")) {
					outToClient.writeBytes("Content-type: image/gif\n");
				}
				if (filename.endsWith(".html")) {
					outToClient.writeBytes("Content-type: text/html\n");
				}
				outToClient.writeBytes("Content-Length: " + numOfBytes
						+ "\n HeaderEnd ");

				outToClient.write(fileInBytes);

				socket.close();

			} else {

				System.out.println("Bad Request Message");
			}
		} catch (Exception e) {

			System.out.println("Error");
		} 
	} 
}


class ThreadedServer {

	// 端口号,默认5432
	private static final int port = 5432;

	public static void main(String args[]) {

		// 创建服务器套接字
		ServerSocket listenSocket = null;

		try {
			listenSocket = new ServerSocket(port);
		} catch (IOException e) {
			System.err.println("IO erro when \"ServerSocket(serverPort)\" ");
			e.printStackTrace();
		}
		System.out.println("server started...");
		while (true) {
			// 一个连接套接字
			Socket connectionSocket = null;
			try {

				connectionSocket = listenSocket.accept();
			} catch (IOException e) {

				System.err.println("IO erro when \"listenSocket.accept()\" ");
				e.printStackTrace();
			}
			System.out.println("receive request from " + connectionSocket);
			new Handler(connectionSocket);
		} 
	} 

}

⌨️ 快捷键说明

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