Java自制简易Http服务器(2)

原创 2018年04月16日 14:16:08

接着上回的代码进行讲解,上回的代码仅能传输文字信息,对图片信息没有办法传送,这次我们来补充传递图片信息的方法。


代码在上一次的代码中做了些修改

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

public class Java_web_test {
    public static void main(String args[]) throws IOException {
        ServerSocket tt=new ServerSocket(6699);
        while(true){
            String rootpath=System.getProperty("user.dir")+File.separator+"静态网页";
            Socket mt = tt.accept();
            BufferedReader asd =new BufferedReader(new InputStreamReader(mt.getInputStream()));
            String m,d;
            m=asd.readLine();
            d=m;
            System.out.println(d);
            while(asd.ready()){
                m=asd.readLine();
                System.out.println(m);
            }
            System.out.println(m);
            String[] array=d.split(" ");


            System.out.println();
            File sll=new File(rootpath+array[1]);
            if(sll.isFile()){
                BufferedInputStream mmt=new BufferedInputStream(new FileInputStream(rootpath+array[1]),206848);//这里使用InputStream而不是Reader主要是图片文件需要使用二进制流来进行读取(编码方式受限,二进制流比较稳妥)
                int wwt=mmt.available();//获得打开文件中的可读数据大小
                byte[] qwer=new byte[wwt];//创建报文缓冲区
                mmt.read(qwer);//将数据写入缓冲区

                BufferedOutputStream ssd=new BufferedOutputStream(mt.getOutputStream());

                StringBuffer n=new StringBuffer();
                n.append("Http/1.1 200 OK \r\n\r\n");
                int a=1,b=0;
                n.append(m);
                ssd.write(n.toString().getBytes());
                ssd.write(qwer);//将缓冲区中数据写出输出流
                System.out.println(n.toString());
                ssd.flush();
                }
            else{
                BufferedWriter sdd=new BufferedWriter(new OutputStreamWriter(mt.getOutputStream()));
                sdd.write("Http/1.1 404 ERROR \r\n\r\n");
                sdd.flush();
            }
            mt.shutdownOutput();
            mt.close();
        }
    }
}



这次的思路就是将Reader这种字符流读取(会强行对图片的二进制文件编码)的方法更替为字节流读取的方法,普适性更强

java简易自制浏览器

  • 2011年06月05日 09:25
  • 159KB
  • 下载

java编写的简易HTTP服务器

  • 2016年10月12日 12:42
  • 215KB
  • 下载

自己动手写http服务器---java版

最简单的http服务器,可下载源码:http://download.csdn.net/detail/ajaxhu/6356885 大概介绍一下原理吧,浏览器打开网页可以简单分为3个阶段: 1.通...
  • AJAXHu
  • AJAXHu
  • 2013-10-05 17:52:41
  • 10190

Java自制简易http服务器(1)

由于计算机网络原理这门课的作业……嗯,简单练习了下做一个简易的服务器该简易服务器十分简陋(甚至只有两个状态(200和404),只接受get方法),同时也没有使用任何比较复杂的类和包。代码基本纯暴力实现...
  • github_37666068
  • github_37666068
  • 2018-04-03 13:45:40
  • 8

c语言HTTP服务器,超级简易版。

算是对linux多线程的复习把,尝试这用socket写了一个简单的HTTP服务器,当访问它的时候它会给你发送一个HTML文件,这个HTML文件需要自己写。 代码:#include #include...
  • your_eyes_see_sea
  • your_eyes_see_sea
  • 2017-03-04 16:19:47
  • 294

一个简易的http服务器。

从代码逻辑我们可以很清晰的看出简单的http服务器锁遵循的框架,以及后台调用的过程 并在此,应用了,多进程,进程间通信的管道,以及网络通信socket的知识/********************...
  • VCCTor
  • VCCTor
  • 2016-04-04 18:47:36
  • 946

简易HTTP服务器

HTTP协议的主要特点如下: 1.支持客户/服务器模式。 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的...
  • qq_35420908
  • qq_35420908
  • 2017-07-18 12:27:17
  • 598

一个简易的java http服务器

TTP是个大协议,完整功能的HTTP服务器必须响应资源请求,将URL转换为本地系统的资源名。响应各种形式的HTTP请求(GET、POST等)。处理不存在的文件请求,返回各种形式的状态码,解析MIME类...
  • WALLEZhe
  • WALLEZhe
  • 2017-03-16 16:32:36
  • 1643

简单HTTP服务器的Java实现

在web的最初阶段是不支持web服务器与用户的交互的.也就是说web服务器不能动态的生成用户要访问的页面,web服务器提供给用户的页面都是提前生成好的.所以也说这种页面是静态页面. 比如说用户请求访...
  • csujiangyu
  • csujiangyu
  • 2015-06-18 16:41:45
  • 4601

自制简易加湿器

自己动手制作加湿器
  • qqliyunpeng
  • qqliyunpeng
  • 2017-04-21 14:44:06
  • 1527
收藏助手
不良信息举报
您举报文章:Java自制简易Http服务器(2)
举报原因:
原因补充:

(最多只允许输入30个字)