Java 简单HTTP Server的设计与实现

2018-12-21 21:23:46郑嘉涛华南师范大学
数码世界 2018年2期
关键词:跨平台局域网框架

郑嘉涛 华南师范大学

在现代社会中,互联网的重要性不言而喻,据《中国互联网发展报告2017》显示,2016年中国数字经济总量达到22.6万亿元,跃居全球第二,占GDP比重达30.3%,成为经济增长的新引擎和新亮点。因此,互联网仍然具有巨大的生机。本文主要论述互联网的体系中HTTP协议及使用JAVA构建HTTP Server。

1 项目背景

HTTP协议是Web中B/S架构最重要的部分之一,它定义了客户机与服务器间的通信的方法,最常用的方法就是GET、和POST,我们常使用GET方法来向服务器请求,使用POST方法来向服务器提交或者上传。在HTTP协议中还有统一资源定位符URL,它是对互联网上的资源的位置以及访问方法的一种简洁的表示,用来描述互联网上的文件。

互联网上有多种常见的服务器框架,例如著名的Apache Tomcat、Nginx等,那么为什么我们要使用JAVA的原生api来建立HTTP Server呢,因为尽管框架很多,但是基础是类似的,而如果只是不断的使用框架,那么我们是无法理解框架的本质的,因此我们需要使用原生api来建立HTTP Server。

2 具体实现

建立HTTP Server的方式有多种,这里采用了JAVA语言,因为JAVA语言是我们最一门设计良好的优秀的跨平台语言,且JAVA在移动平台上也得到了广泛的应用,因此使用JAVA来建立HTTP Server,可以方便的在不同平台上迁移,实现良好的跨平台效果。

在PC上建立时我们可以使用127.0.0.1的环回地址进行测试,而在android上则可以使用如下代码来获取android设备的局域网地址,使用局域网地址和处于同一个局域网的电脑主机进行测试。

public static String getLocalIpStr(Context context){

WifiManagerwifiManager=(WifiManager)context.getSystemService(Context.WIFI_SERVICE);

WifiInfo wifiInfo=wifiManager.getConnectionInfo();

return intToIpAddr(wifiInfo.getIpAddress());

}

private static String intToIpAddr(int ip){

return (ip & 0xFF)+"."+ ((ip>>8)&0xFF) + "."+((ip>>16)&0xFF) + "."+ ((ip>>24)&0xFF);

}

2.1 代码实现概述

基础的HTTP Server中我们只需要实现GET方法和POST方法就可以建立起一个HTTP Server了。GET方法用来向服务器请求资源,当服务器接受到HTTP请求时,就检查HTTP的头部,如果头部中有GET字段,就检查服务器中是否有URL所请求的资源,如果有则返回,没有则返回404错误信息。

对于POST方法,操作要复杂一些,因为这里是使用POST方法向HTTP Server发送,文件,需要HTTP Server做好接收,同时也需要HTTP Server对文件的信息进行判断。本地上传的最大问题就是大文件的上传,如何将大文件分片并且上传,同时保证传输不出错,这就需要客户端浏览器有一定的计算能力了,也就是要使用活动网页的技术,使用JavaScript语言来在浏览器上对文件进行一定的控制。

2.2 代码实现优化

在HTTP Server的构建过程中,我们应该想到将来可能遇到的变化,例如我们要对软件进行升级以及维护。软件开发中常常会有一些bug出现,时常出乎预料,因此我们要提前做好准备,预期后面的升级维护,否则面对越来越大的系统,要做改变时都会觉得无从下手。因此软件开发过程中,要注重设计模式的思想,将接受请求的HTTP连接的类独立出来,使用一个单体模式来获得这个类的对象。使用工厂模式来创建HTTP连接的处理类,方便扩展更多功能。同时,系统应将不同的功能模块独立开发,每个模块之间进行有机组合,降低整体复杂度。

3 结论

本文讨论了实现HTTP Server的方法,并对HTTP协议进行了简单分析,并使用JAVA语言编写,最终实现简单HTTP Server。

[1]David Gourley, Brian Totty, Marjorie Sayer, Sailu Reddy,Anshu Aggarwal 著. HTTP 权威指南[M]. 陈涓,赵振平译. 北京:人民邮电出版社, 2012.

[2]王远洋, 周渊平, 郭焕丽. Linux 下基于 Socket 多线程并发通信的实现[J]. 微计算机信息, 2009, 25(5).

[3]李芝新,杨瑞龙.Java程序设计之网络编程[M].北京:清华大学出版社, 2009.

猜你喜欢
跨平台局域网框架
框架
广义框架的不相交性
基于VPN的机房局域网远程控制系统
电子制作(2019年16期)2019-09-27 09:35:04
跨平台APEX接口组件的设计与实现
测控技术(2018年9期)2018-11-25 07:44:58
基于802.1Q协议的虚拟局域网技术研究与实现
电子制作(2017年17期)2017-12-18 06:40:48
局域网性能的优化
电子制作(2017年8期)2017-06-05 09:36:15
WTO框架下
法大研究生(2017年1期)2017-04-10 08:55:06
一种基于OpenStack的云应用开发框架
基于QT的跨平台输电铁塔监控终端软件设计与实现
基于OPC跨平台通信的电机监测与诊断系统