2017年03月14日23:31:16 ububtu
今天研究了一天的NanoHTTPD的代码,一个java类实现的HTTP轻量服务器。
NanoHTTPD是一个抽象类,内部类
HTTPSession和接口IHTTPSession,
HTTPSession实现了IHTTPSession的接口。
NanoHTTPD内部自置SocketServer类,每次有连接会自动创建一个
HTTPSession对象和一个线程运行
HTTPSession.execue()方法
以上都不重要
上传
我们只要实现
serve
(
IHTTPSession Session
)这个方法。
类本身帮助我们实现了从数据流中截取了HTTP协议的清单文件,在头文件中,
类有趣的地方使用
PushbackInputStream这个流,可以读出数据查看,再把读出的数据 再写(
unread())回去。
用这个流 截取走了头文件部分,剩下的数据流在
Serve(
IHTTPSession Session
)方法中我们可以使用
Session
.getInputStream()
方法来得到数据流,读取数据流中数据。
但是这个流有一个问题,读完数据后的流不会返回-1或者结束。需要我们来加入判断结束。
我是使用 判断最后一次的数据是否小于缓存的BUFFER_SIZE ,如果小于它 就说明了数据读完。结束这个
while。进行其他操作
下载:
返回一个文件流到客户端。
type 文件名称
fis 文件输入流
serve
()中 return new
NanoHTTPD.Response(Response.Status.
OK
, type, fis);