`

JAVA编写的一个简单的Socket实现的HTTP响应服务器

 
阅读更多

JAVA编写的一个简单的Socket实现的HTTP响应服务器,看后就很容易理解Web服务器的原理了。

 

package test.io;

import java.net.*;
import java.io.*;

/**
 * 一个简单的Socket实现的HTTP响应服务器。<br>
 * 只用于熟悉HTTP协议的目的,可以看到浏览器发过来的数据格式。
 * 
 * @author  */
public class MyWebServer {
  public static void main(String[] args) {
    Socket socket = null;
    try {
      // 创建一个监听8000端口的服务器Socket
      ServerSocket s = new ServerSocket(8000, 3);
      System.out.println("MyWebServer等待来自浏览器的连接\n");
      while (true) {
        socket = s.accept();
        System.out.println("连接已建立。端口号:" + socket.getPort());
        new MyWebServerThread(socket).start();
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

class MyWebServerThread extends Thread {
  private Socket socket;

  MyWebServerThread(Socket socket) {
    this.socket = socket;
  }

  @Override
  public void run() {
    try {
      InputStreamReader is = new InputStreamReader(socket.getInputStream());
      char[] bs = new char[2048];
      PrintStream out;
      out = new PrintStream(socket.getOutputStream());
      StringBuilder msg = new StringBuilder();
      // 如果10毫秒还没有数据,则视同没有新的数据了。
      // 因为有Keep-Alive的缘故,浏览器可能不主动断开连接的。
      // 实际应用,会根据协议第一行是GET还是 POST确定。
      socket.setSoTimeout(10);
      //
      // 此处读入请求数据并做相应的处理
      //
      int len = -1;
      try {
        while ((len = is.read(bs)) != -1) {
          msg.append(bs, 0, len);
          msg.append("\n");
        }
      } catch (Exception ex) {
        // ex.printStackTrace();
      }
      // 下面是由服务器直接生成的主页内容
      // 1、首先向浏览器输出响应头信息
      out.println("HTTP/1.1 200 OK");
      out.println("Content-Type:text/html;charset:GBK");
      out.println();
      // 2、输出主页信息
      out
          .println("<HTML><BODY>"
              + "<center>"
              + "<H1>HTTP协议测试服务器,当前时间:"
              + new java.util.Date()
              + "</h1>"
              + "<form method='get'>username:<input type='text' name='username'/>password:<input type='text' name='password'/><input type='submit' value='GET测试'/></form><br/>"
              + "<form method='post'>username:<input type='text' name='username'/>password:<input type='text' name='password'/><input type='submit' value='POST测试'/></form><br/>"
              + "<form method='post'  enctype='multipart/form-data'>phototitle:<input type='text' name='phototitle'/>photo:<input type='file' name='photo'/><input type='submit' value='Upload测试'/></form>"
              + "</center>您提交的数据如下:<pre>" + msg.toString() + "</pre></BODY></HTML>");
      out.flush();
      out.close();
      is.close();
      System.out.println("close");
      // 关闭连接
      socket.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}



 

分享到:
评论

相关推荐

    一个简单的Socket实现的HTTP响应服务器

    标题 "一个简单的Socket实现的HTTP响应服务器" 描述了如何使用Java中的Socket编程来构建一个基本的HTTP服务器,这是网络编程中的一个基础概念。HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,而...

    JAVA使用Socket编写HTTP服务器

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

    java编写的GUI简单socket聊天源码小程序

    Java编写的GUI简单Socket聊天源码小程序是一种基于Java语言实现的图形用户界面(GUI)通信应用,它利用了Socket编程来实现客户端与服务器端的实时交互。Socket编程是网络编程的基础,它允许两台计算机通过互联网进行...

    java编写的浏览器和服务器

    本项目涉及的是使用Java编写的一个简单的浏览器和服务器,这对于学习Java网络编程的初学者来说是一个很好的实践案例。 首先,我们要理解浏览器和服务器的基本工作原理。浏览器是客户端应用程序,用于向服务器发送...

    java实现http服务器实例

    你可以编写一个简单的HTTP客户端,如使用`curl`命令或者编写一个Java程序,向8080端口发送GET请求,以验证服务器是否能正确响应。 总的来说,通过这个实例,你可以学习到Java中创建基本HTTP服务器的步骤,以及如何...

    JAVA实现简单的http静态网页服务器

    标题 "JAVA实现简单的http静态网页服务器" 涉及的核心知识点是使用Java编程语言构建一个基本的HTTP服务器,用于提供静态网页服务。这通常是为了学习、测试或在简单环境中部署Web应用。以下是对这个主题的详细说明: ...

    使用Java编写的一个简易多线程HTTP服务器

    标题中的“使用Java编写的一个简易多线程HTTP服务器”指的是一个使用Java编程语言实现的简单HTTP服务器,它利用了多线程技术来处理客户端的HTTP请求。在Java中,可以使用Socket编程接口来建立TCP连接,进而实现HTTP...

    用java实现的http服务器端例程java

    本篇文章将深入探讨如何使用Java实现一个简单的HTTP服务器。标题中的"用Java实现的HTTP服务器端例程Java"揭示了我们将讨论的重点:通过Java编写服务器端程序来处理HTTP请求。 首先,HTTP(超文本传输协议)是互联网...

    JAVA基于Socket编写的Ftp程序

    本项目"JAVA基于Socket编写的FTP程序"是一个利用Java语言实现的简单FTP(File Transfer Protocol)客户端和服务端应用。FTP是一种用于在互联网上可靠地传输文件的标准协议,它允许用户从远程主机下载文件或上传文件...

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

    Java Socket编程是Java网络编程的基础,它提供了网络通信的能力,使得程序可以与其他计算机上的服务进行交互。...实践是掌握这些知识的最佳方式,建议动手尝试编写一个简单的SMTP邮件发送程序,以巩固理论知识。

    通过java编写客户端,服务器程序,实现聊天功能

    本教程将详细阐述如何通过Java编写客户端和服务器程序来实现这一功能。 首先,我们要理解客户端与服务器端的基本概念。客户端是发起请求的一方,而服务器端则是响应请求并提供服务的一方。在网络通信中,通常使用...

    C++写的服务器与Java写的客户端通过Socket通信java代码

    在这个场景中,我们关注的是C++编写的服务器和Java编写的客户端如何利用Socket进行通信。下面将详细介绍这个过程。 首先,让我们了解Socket的基本概念。Socket可以被看作是两台计算机之间的通信端点,它提供了低...

    利用Java Sock实现C/S通信

    本项目通过Java Socket库构建了一个简单的聊天应用程序,允许两台计算机通过网络进行交互。下面将详细介绍Java Socket在C/S通信中的应用,以及如何构建这样的系统。 一、Java Socket基础 1. Socket概念:Socket在...

    java多线程+Socket+Swing做的局域网聊天程序

    总的来说,"java多线程+Socket+Swing做的局域网聊天程序"是一个综合性的项目,涵盖了Java基础、网络编程以及GUI设计等多个方面,对于学习和理解Java应用开发具有很高的实践价值。通过这样的项目,开发者可以提升对...

    java写的一个简单基于tcp协议的多用户聊天系统

    在本项目中,我们探讨的是一个使用Java(J2SE)编写的简单多用户聊天系统,该系统基于TCP协议。TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,它确保了数据的正确顺序传输和无丢失,...

    java socket编写的上网代理

    总结来说,这个项目是利用Java Socket实现了一个简单的HTTP代理服务器,用户可以通过配置浏览器的代理设置来使用它。尽管它可能不包含复杂的功能,如缓存、身份验证或协议转换,但对于学习网络编程和理解HTTP代理...

    java IO流+socket源码 实现简单文本传输

    在这个示例中,我们将深入探讨如何利用Java IO流与Socket实现简单的文本传输。对于初学者来说,理解这两个概念及其交互是非常关键的。 首先,让我们来了解Java IO流。IO流在Java中用于读取和写入数据,它可以是文件...

    Java 客户端服务器程序 学习笔记

    在Java编程领域,客户端-服务器(Client-Server)程序是一种常见的架构模式,它涉及两个主要组件:客户端应用...记住,实践是最好的老师,所以动手尝试创建一个简单的客户端服务器应用程序是巩固理论知识的绝佳方法。

    用Java实现基于Socket的网络编程

    在这个项目中,我们讨论的是如何用Java实现基于Socket的网络编程,具体是一个简单的聊天室应用。Socket编程是网络通信的基础,它允许两个或多个设备通过TCP(传输控制协议)进行数据交换。TCP是一个面向连接的、可靠...

    java 和 android socket 简单交互

    在本场景中,我们有一个Java编写的服务器端(SocketServer.java)和Android客户端进行简单的Socket交互。 首先,让我们深入了解Java中的Socket。Socket是在TCP/IP协议簇上实现进程间通信的一种方式,它提供了两台...

Global site tag (gtag.js) - Google Analytics