📄 serverthread.java
字号:
package com.lm.webserver;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.*;
import java.net.*;
import java.util.StringTokenizer;
//服务器多线程类
public class ServerThread extends Thread{
BufferedReader sin=null;
DataOutputStream sout=null;
Socket thsocket=null;
String requestMessageLine;
String fileName;
StringTokenizer tokenizedLine;
public ServerThread(Socket ps){
thsocket=ps;
try{
sin=new BufferedReader(new InputStreamReader(thsocket.getInputStream()));
sout=new DataOutputStream(thsocket.getOutputStream());
}
catch(IOException e){
System.out.println("用户离开!");
}
}
public void run(){
while(true){
try{
requestMessageLine = sin.readLine();
if(requestMessageLine!=null){
//System.out.println ("请求信息行的内容是:"+requestMessageLine);
if(requestMessageLine.startsWith("GET")){
tokenizedLine = new StringTokenizer(requestMessageLine);
if(tokenizedLine.nextToken().equals("GET")){
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);
sout.writeBytes("HTTP/1.0 200 Document Follows\r\n");
if(fileName.endsWith(".jpg"))
sout.writeBytes("Content-Type:image/jpeg\r\n");
if(fileName.endsWith(".gif"))
sout.writeBytes("Content-type:image/gif\r\n");
sout.writeBytes("Content-Length:"+numOfBytes+"\r\n");
sout.writeBytes("\r\n");
sout.write(fileInBytes,0,numOfBytes);
}
}
}
}catch(IOException e){
try{
this.sin.close();
this.sout.close();
this.thsocket.close();
}
catch(IOException eee){
System.out.println("异常离开");
}
break;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -