`

java socket实现Http服务器

 
阅读更多
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class Processor extends Thread{
private Socket socket;
private InputStream in;
private PrintStream out;
public final static String WEB_ROOT="c:\\workspace\\webserver\\htdocs";
public Processor(Socket socket){
   this.socket=socket;
   try {
    in=socket.getInputStream();
    out=new PrintStream(socket.getOutputStream());
   } catch (IOException e) {
    e.printStackTrace();
   }
}

public void run(){
 
   String filename=parse(in);
   sendFile(filename);
   }


public String parse(InputStream in){
 
   BufferedReader br=new BufferedReader(new InputStreamReader(in));
   String filename=null;
 
   try {
    String httpMessage=br.readLine();
    String[] content=httpMessage.split(" ");
    if(content.length!=3){
     sendErrorMessage(400,"Client query error!");
     return null;
    }
  
    System.out.println("code:"+content[0]+",fileName"+content[1]+",http version:"+content[2]);
    filename=content[1];
   } catch (IOException e) {
    e.printStackTrace();
   }
   return filename;
}

public void sendErrorMessage(int errorCode,String errorMessage){
 
   out.println("HTTP/1.0"+errorCode+" "+errorMessage);
   out.println("content-type: text/html");
   out.println();
   out.println("");
   out.println("Error Message");
   out.println("");
   out.println("");
   out.println("ErrorCode:"+errorCode+",Message:"+errorMessage+"");
   out.println("");
   out.println("");
   out.flush();
   out.close();
   try {
    in.close();
   } catch (IOException e) {
    e.printStackTrace();
   }
}
public void sendFile(String filename){
   File file=new File(Processor.WEB_ROOT+filename);
   if(!file.exists()){
    sendErrorMessage(404,"File Not Found!");
    return;
   }
   try {
    InputStream in=new FileInputStream(file);
    byte content[]=new byte[(int)file.length()];
    in.read(content);
    out.println("HTTP/1.0 200 queryfile");
    out.println("conrtent=length:"+content.length);
    out.println();
    out.write(content);
    out.flush();
    out.close();
    in.close();
  
   } catch (FileNotFoundException e) {
    e.printStackTrace();
   } catch (IOException e) {
    e.printStackTrace();
   }
 
}
}


2.WebServer.java
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public void serverStart(int port) {
   try {
    ServerSocket serverSocket = new ServerSocket(port);
    while (true) {
     Socket socket = serverSocket.accept();
     new Processor(socket).start();
    }
   } catch (IOException e) {
    e.printStackTrace();
   }
}
public static void main(String[] args) {
   int port = 80;
   if (args.length == 1) {
    port = Integer.parseInt(args[0]);
   }
   new WebServer().serverStart(port);
}
}
分享到:
评论

相关推荐

    基于java socket实现的ftp客户端和服务端交互

    本项目是使用java Socket编程实现的一个简单的FTP服务器和客户端。 客户端目前实现的功能是登录,刷新,上传和下载。同时具有主动模式和被动模式两种模式。 服务器端实现的功能有登录、刷新、上传、下载、列出文件...

    JAVA Socket编程实现文件上传

    在这个场景中,我们讨论的是如何使用Java的Socket来实现文件上传功能,即从客户端将文件发送到服务器,然后保存到服务器的数据库中。这个过程涉及到多个关键知识点,下面我们将详细探讨。 1. **Java Socket基础**:...

    通过java socket实现屏幕网络监控

    Java Socket技术是网络编程中的重要组成部分,主要用于实现两个应用程序之间的通信。在这个场景中,我们讨论的是如何使用Java Socket来实现实时的屏幕监控功能,即服务端能够远程查看客户端的屏幕内容,这样的功能在...

    java socket实现smtp发送邮件,支持SSL

    Java Socket 实现 SMTP 发送邮件是一项常见的编程任务,尤其在自动化通知、系统间通信或用户交互中非常有用。SMTP(Simple Mail Transfer Protocol)是互联网上用于传输电子邮件的标准协议,而Java Socket则是Java...

    Java Socket实现简单的web服务器

    Java Socket实现简单的Web服务器是一个基础但实用的编程实践,它涉及到网络编程、HTTP协议和文件I/O等核心概念。在本项目中,我们利用Java的Socket API构建了一个基本的服务器,该服务器仅处理HTTP GET请求并返回...

    Java Socket 实现SMTP邮件发送,支持SSL/TSL

    而Java Socket库则提供了实现SMTP客户端所需的基本功能,允许我们创建连接到SMTP服务器的套接字,并通过这个连接发送邮件。以下是一些关键知识点: 1. **Java Socket类**:Java的`java.net.Socket`类是网络通信的...

    Java Socket编程实现的简单多线程WEB服务器

    Java Socket 编程实现的简单多线程 WEB 服务器 在本文中,我们将详细介绍如何使用 Java 的 Socket 编程实现一个简单的多线程 WEB 服务器。 Socket 编程简介 Socket 编程是 Java 网络编程的基础,它允许开发者创建...

    java socket连接池 实现

    Java Socket 连接池实现是提高网络应用性能和效率的关键技术之一。在高并发的网络环境中,频繁地创建和销毁Socket连接会导致大量的系统资源浪费,影响整体性能。为了解决这个问题,开发人员通常会使用连接池来管理和...

    在 Java 上实现的 Socket.IO 服务器 实时java框架

    该项目是Socket.IO服务器的开源 Java 实现。基于Netty服务器框架。 根据 Apache License 2.0 获得许可。 支持1.x - 4.x版本的Socket.IO 客户端 支持 xhr 轮询传输 支持websocket传输 支持命名空间和房间 支持ack...

    java socket 实现SMTP协议 发送邮件.docx

    Java Socket 是 Java 语言中用于实现网络编程的 API,通过 Socket,可以实现与远程服务器的通信。在这里,我们将使用 Java Socket 实现 SMTP 协议来发送邮件。 SMTP 协议简介 SMTP(Simple Mail Transfer Protocol...

    java的Socket实现的多人聊天程序

    Java的Socket实现的多人聊天程序是一个基于网络通信的项目,主要利用了Java的Socket类来构建客户端和服务端的通信桥梁。Socket是TCP/IP协议的一部分,它提供了两台计算机之间进行数据传输的基础。在这个项目中,...

    Java Socket PC端传输文件简易服务器客户端

    Java Socket编程是网络编程中的重要组成部分,主要用于在两台计算机之间建立双向通信通道,实现数据的交换。在Java中,Socket类和ServerSocket类是进行网络通信的核心工具,它们提供了客户端与服务器之间的连接和...

    java socket服务器客户端程序

    Java Socket服务器客户端程序是网络编程中的基础组件,用于实现两台计算机之间的通信。Socket编程是Java提供的一个标准接口,它允许应用程序通过网络发送和接收数据。在这个程序中,我们将探讨以下几个核心知识点: ...

    JAVA使用Socket编写HTTP服务器

    在Java编程语言中,使用Socket实现一个简单的HTTP服务器是一项基础但重要的技能。HTTP服务器是互联网上用于接收HTTP请求并返回响应的程序。本教程将详细解释如何通过Socket类来构建这样的服务器,同时会涉及到相关的...

    Java实现Socket长连接和短连接

    综上所述,Java实现Socket长连接和短连接涉及网络通信基础、连接管理、异常处理等多个方面,开发者需要根据实际需求权衡选择合适的方式。通过深入理解这些概念和技术,可以有效地优化网络服务,提升应用的性能和用户...

    java socket实现双机通信 有界面

    Java Socket 实现双机通信,通常是指通过网络编程技术在两台或多台计算机之间建立通信链路,使得数据能够双向传输。在这个场景中,我们提到的是一个具备图形用户界面(GUI)的多人聊天室应用。Java Socket 提供了低...

    Java基于socket实现的客户端和服务端通信功能完整实例

    在Java中,Socket是实现网络通信的基础,通过Socket可以实现客户端和服务器端之间的通信。本文将详细介绍Java基于Socket实现的客户端和服务端通信功能,包括客户端和服务器端的实现、连接和通信的过程。 Socket的...

    java Socket通信实现

    在Java中,Socket提供了低级别的、基于连接的、面向数据流的通信API,可以用于实现客户端-服务器架构的应用程序。以下是关于Java Socket通信实现的详细知识点: 1. **Socket基础**: - **Socket类**:Java中的`...

    Java Socket 聊天通信演示代码

    Java Socket 是一种网络通信协议,它是Java编程语言中实现客户端-服务器模型的基础。Socket 提供了低级别的、面向连接的、双向通信的网络接口,允许应用程序通过网络进行数据传输。在本示例中,我们将深入探讨Java ...

    Java socket编程实现两台主机间的通信

    Java Socket 编程实现两台主机间的通信 Java Socket 编程是 Java 语言中用于实现网络通信的编程技术。通过使用 Socket 编程,可以实现两台主机之间的通信,实现数据的传输和交换。本文将详细介绍 Java Socket 编程...

Global site tag (gtag.js) - Google Analytics