NanoHTTPD的学习

来源:互联网 发布:气象数据知识试题 编辑:程序博客网 时间:2024/06/08 14:27
2017年03月14日23:31:16  ububtu
今天研究了一天的NanoHTTPD的代码,一个java类实现的HTTP轻量服务器。
NanoHTTPD是一个抽象类,内部类HTTPSession和接口IHTTPSession,
HTTPSession实现了IHTTPSession的接口。

NanoHTTPD内部自置SocketServer类,每次有连接会自动创建一个HTTPSession对象和一个线程运行HTTPSession.execue()方法

以上都不重要
上传
我们只要实现serveIHTTPSession Session这个方法。
类本身帮助我们实现了从数据流中截取了HTTP协议的清单文件,在头文件中,
类有趣的地方使用PushbackInputStream这个流,可以读出数据查看,再把读出的数据  再写(unread())回去。
用这个流 截取走了头文件部分,剩下的数据流在Serve(IHTTPSession Session方法中我们可以使用Session.getInputStream()
方法来得到数据流,读取数据流中数据。
但是这个流有一个问题,读完数据后的流不会返回-1或者结束。需要我们来加入判断结束。
我是使用 判断最后一次的数据是否小于缓存的BUFFER_SIZE ,如果小于它 就说明了数据读完。结束这个
while。进行其他操作

下载:
返回一个文件流到客户端。
type 文件名称
fis 文件输入流
serve()中 return newNanoHTTPD.Response(Response.Status.OK, type, fis);


原创粉丝点击