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