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

📄 server.java

📁 卡耐基SSD8 ex1.答案。不错哦。欢迎下载
💻 JAVA
字号:

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.StringTokenizer;

public class Server {
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		
		String clientSentence;
		int port = 5432;
		if(args.length!=1 && args.length!=0){
			System.out.println("Usage: Server <port>");
			return;
		}
		
		ServerSocket welcomeSocket = new ServerSocket(port);
		System.out.println("Server Started...");
		while (true) {
			Socket connectionSocket = welcomeSocket.accept();
			BufferedReader inFromClient = new BufferedReader(
					new InputStreamReader(connectionSocket.getInputStream()));
			DataOutputStream outToClient = new DataOutputStream(
					connectionSocket.getOutputStream());
			clientSentence = inFromClient.readLine();

			// 在服务器端显示来自客户端的请求,方便测试。
			System.out.println("receive request from " + connectionSocket+" : "+clientSentence);

			StringTokenizer tokenizer = new StringTokenizer(clientSentence);
			if (tokenizer.nextToken().equals("GET")) {
				String filename = tokenizer.nextToken();
				if (filename.startsWith("/") == true) {
					filename = filename.substring(1);
				}

				File file = new File(filename);
				int numOfBytes = (int) file.length();
				byte[] fileInBytes = new byte[numOfBytes];

				FileInputStream inFile = null;
				try {
					inFile = new FileInputStream(filename);
					inFile.read(fileInBytes);

				} catch (Exception e) {
					outToClient.writeBytes(
							"Header:\r\n"+
							"HTTP/1.0 404 File not found\r\n"+
							"Server: SSD8Server/1.0\r\n"+
							"Content-type: text/html\r\n"+
							"Content-length: 57\r\n ");
					outToClient.writeBytes("HeaderEnd");
					outToClient.writeBytes(error("HTTP/1.0 404 File not found"));
					continue;
				}

				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);
				outToClient.flush();
			} else {
				outToClient.writeBytes("HTTP/1.0 505 Not Implemented\r\n"
						+ "Server: SSD8Server/1.0\r\n"
						+ "Content-type: text/html\r\n"
						+ "Content-length: 57\r\n ");
				outToClient.writeBytes("HeaderEnd");
				outToClient.writeBytes(error("HTTP/1.0 505 Not Implemented"));
			}
		}
	}
	//返回错误信息。
	private static String error(String msg) {
		String html_page = "<HTML>" + "\r\n"+"<BODY>" + "\r\n" + "<H1>" + "\r\n "
				+ msg + "\r\n" + "</H1>" +"\r\n"+ "</BODY>"+"\r\n" + "</HTML>" + "\r\n";

		return html_page;
	}
}

⌨️ 快捷键说明

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