当前位置: 代码迷 >> J2EE >> 一个简单的HTTP服务器有关问题
  详细解决方案

一个简单的HTTP服务器有关问题

热度:295   发布时间:2016-04-22 03:18:52.0
一个简单的HTTP服务器问题
Java code
import java.io.*;import java.net.*;import java.util.*;public class Server {    public static void main(String[] args) throws Exception {        String requestMessageLine;        String fileName;        ServerSocket listenSocket = new ServerSocket(8000);        Socket connectSocket = listenSocket.accept();        BufferedReader inFormClient = new BufferedReader(new InputStreamReader(                connectSocket.getInputStream()));        DataOutputStream outToClient = new DataOutputStream(connectSocket.getOutputStream());        requestMessageLine = inFormClient.readLine();        StringTokenizer tokenizedLine = new StringTokenizer(requestMessageLine);        InputStream is = connectSocket.getInputStream();        OutputStream os = connectSocket.getOutputStream();        PrintWriter pw = new PrintWriter(os);                while (true) {            if (tokenizedLine.nextToken().equals("GET")) {                fileName = tokenizedLine.nextToken();                if (fileName.startsWith("/") == true) {                    fileName = fileName.substring(1);                }                String filePath = new String("C:\\www\\");                File file = new File(filePath + fileName);                int numOfBytes = (int) file.length();                try {                    FileInputStream inFile = new FileInputStream(filePath                            + fileName);                    byte[] fileInBytes = new byte[numOfBytes];                    inFile.read(fileInBytes);                    outToClient.writeBytes("HTTP/1.0 200 Document Follows\r\n");                    if (fileName.endsWith(".jpg")) {                        outToClient.writeBytes("Conten-Type: image/jpeg\r\n");                    } else if (fileName.endsWith(".gif")) {                        outToClient.writeBytes("Conten-Type: image/gif\r\n");                    } else if (fileName.endsWith(".html")                            || fileName.endsWith(".htm")) {                        outToClient.writeBytes("Conten-Type: text/html\r\n");                        // System.out.println(outToClient.toString());                    }                    outToClient.writeBytes("Content-Length: " + numOfBytes                            + "\r\n");                    outToClient.writeBytes("\r\n");                    outToClient.write(fileInBytes, 0, numOfBytes);                    connectSocket.close();                } catch (FileNotFoundException e) {                    outToClient.writeBytes("HTTP/1.0 200 Document Follows\r\n");                    pw.print("ContentType: text/html\r\n");                    pw.print("\r\n");                    pw.print("<body>");                    pw.println("Your request: " + fileName + " is not found!");                    pw.print("</body>");                    pw.close();                    is.close();                } catch (NoSuchElementException ee) {                    outToClient.writeBytes("HTTP/1.0 200 Document Follows\r\n");                    pw.print("ContentType: text/html\r\n");                    pw.print("\r\n");                    pw.print("<body>");                    pw.println("No support for other request except GET!");                    pw.print("</body>");                    pw.close();                    is.close();                }            }        }    }}


现在的问题是可以通过浏览器请求一个C:\www\路径下的文件,比如txt、jpg等,但是当请求的是html时,网页中的图片无法显示,有谁能帮下忙!!
不胜感激!!!

------解决方案--------------------
不懂,帮顶
  相关解决方案