📄 server.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 + -