`
nancychengnan
  • 浏览: 3327 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

JavaWeb Socket 通信优化设置 .JavaWeb Socket 通信优化设置 .

 
阅读更多
http://blog.csdn.net/Ibznphone/article/details/7708624
一.HTTP协议的作用原理

  HTTP协议的作用原理包括四个步骤:

1.连接:Web浏览器与Web服务器建立连接。2.请求:Web浏览器通过socket向Web服务器提交请求。3.应答:Web浏览器提交请求后,通过HTTP传送给Web服务器。Web服务器接到请求后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。4.关系连接:当应答结束后,Web浏览器与Web服务器必须断开,以保证其它Web浏览器能够与Web服务器建立连接。

二.用Java实现Web服务器的程序设计

  根据上述HTTP协议的作用原理,实现GET请求的Web服务器程序的方法如下:

1.创建ServerSocket类对象,监听端口8080。这是为了区别于HTTP的标准TCP/ip端口80而取的;2.等待、接受客户机连接到端口8080,得到与客户机连接的socket;3.创建与socket关联的输入流instream和输入出流outstream;
式为:GET路径/文件名HTTP/1.0;4.从与socket关联的输入流instream中读取一行客户机提交的请求信息,请求信息的格式为:GET路径/文件名HTTP/1.0;5.从请求信息中获取请求类型。假如请求类型是GET,则从请求信息中获取所访问的Html文件名。没有HTML文件名时,则以index.htm1作为文件名;6.假如HTML文件存在,则打开HTML文件,把HTTP头信息和HTML文件内容通过socket传回给Web服务器,然后关闭文件,否则发送错误信息给Web浏览器;7.关闭与相应Web浏览器连接的socket字。

三.优化设置:socket TcpNodelay设置为true;

客户端发送23字节,循环发送1000次,用时 60s。

将socket TcpNodelay设置为true后效率有所提升
发送23字节,循环发送1000次,用时 3s。
settcpnodelay(true)
我定位影响效率的原因是 in.read()阻塞导致的.
settcpnodelay(flase)即默认情况下
每次read()耗时 202ms左右,write() 0ms
settcpnodelay(true)即禁用negal算法,
每次read()耗时 1ms 左右,write() 1-3ms左右
偶尔出现一次40ms的情况

测试结果..
settcpnodelay(flase)
情况下
在一次发送 1536字节 获取响应70字节 循环一1000。。只需1500ms左右
在发送<1500字节的时候 获取响应70字节 循环一1000。。竟然达到 41000ms左右
settcpnodelay(true)
情况下
在一次发送 1536字节 获取响应70字节 循环一1000。。只需1500ms左右
在发送<1500字节的时候 获取响应70字节 循环一1000。。只需800ms左右


分享到:
评论

相关推荐

    Android与Javaweb服务器通信

    Android与Javaweb服务器通信,通过http协议,非socket方式,代码可以运行,适合初学者。

    java socket 发送http请求webservice.

    NULL 博文链接:https://genius.iteye.com/blog/451378

    java web使用Socket通信案例源码

    此案例是java web服务器与客户端通信原理的简单案例

    Java Web项目中使用Socket通信多线程、长连接的方法

    很多时候在javaweb项目中我们需要用到Socket通信来实现功能,在web中使用Socket我们需要建立一个监听程序,在程序启动时,启动socket监听。接下来通过本文给大家介绍Java Web项目中使用Socket通信多线程、长连接的...

    万能后台管理模板javaweb

    25. 数据库备份:可备份单表、整库,支持本地和远程数据库备份(java界面编程技术,socket编程技术) 26. 备份定时器:quartz 2.2 强大的任务调度,多线程备份数据库,任务启动关闭异步操作 27. 数据库还原:历史备份...

    qt与java之间socket通讯

    qt与javasocket通讯,消息格式类似json。qt部分充当服务端。

    javaweb启动时启动socket服务端代码实现

    主要介绍了javaweb启动时启动socket服务端代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    基于Java的Socket套接字编程 源代码

    基于Java的Socket套接字编程 源代码

    Java WebSocket编程、开发、部署和保护动态Web应用

    Java WebSocket编程、开发、部署和保护动态Web应用 扫描版

    Vue+Java 通过websocket实现服务器与客户端双向通信操作

    主要介绍了Vue+Java 通过websocket实现服务器与客户端双向通信操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    Java Socket 套接字编程经典入门

    Java Socket编程经典的入门教程(包含源代码) Socket即套接字 java.net包的客户端Socket,服务端ServerSocket; 单线程套接字客户端和服务端的处理; 服务端多线程处理客户端套接字; 带有线程池处理客户端套接字;...

    基于JAVA的ICQ系统的设计于实现

    在java中使用套接口相当简单,Java API为处理套接口的通信提供了一个类java.net.Socket.,使得编写网络应用程序相对容易.服务器采用多线程以满足多用户的请求,通过JDBC与后台数据库连接,并通过创建一个...

    基于JAVA的ICQ系统

    在java中使用套接口相当简单,Java API为处理套接口的通信提供了一个类java.net.Socket.,使得编写网络应用程序相对容易.服务器采用多线程以满足多用户的请求,通过JDBC与后台数据库连接,并通过创建一个...

    基于JAVA的网络聊天室(BS)

    socket = new Socket(this.getCodeBase().getHost(), 6666); in=new DataInputStream(socket.getInputStream()); out=new DataOutputStream(socket.getOutputStream()); } catch (IOException ee) { 提示条....

    socket服务端,PC端,手持终端源代码(附数据库文件)

    无聊自己做的socket源码,服务端,PC端,手持终端 源码 数据库,可自行修改

    javaweb HTTP协议

    介绍了HTTP,讲解了浏览器访问多图网页的过程,比较了HTTP 1.1版本与1.0版本的不同之处,并介绍了请求-响应回路中的消息及消息头。

    JavaWEB面试题集合

    一、Core Java:基础及语法、异常、集合、线程、IO & Socket 二、OOAD & UML 三、XML 四、SQL 五、JDBC & Hibernate 六、Web 七、EJB & Spring 八、数据结构& 算法& 计算机基础 九、C++ 十、Weblogic 及其它(附加...

    Java开发技术大全 电子版

    8.4线程的通信与协调277 8.4.1线程的互斥277 8.4.2线程的同步279 8.4.3暂停、恢复和停止线程282 8.4.4生产者-消费者问题实例284 8.5本章小结287 第9章运行时类型识别288 9.1RTTI的作用288 9.2用Class类来...

    2018年面试实战总结.zip

    2018/11/04 周日 下午 16:17 709,934 轻松搞定JavaWeb面试.docx 2018/12/16 周日 上午 09:31 806,830 达令Java面试.docx 2018/12/14 周五 下午 15:36 62,615 鸿云亚信科技面试题-最终版.docx 40 个文件 6,463,197 ...

    基于安卓的音频播放器基于安卓的音频播放器javafx2.0官方例子JavaMAIL1.6JavaMAIL1.6anylogic

    支持常用的邮件协议,如SMTP、POP3、IMAP,开发人员使用JavaMail编写邮件程序时,无需考虑底层的通信细节(Socket),JavaMail也提供了能够创建出各种复杂...anylogic-in-3-days(最新版)到14.10为止javaweb实现的博...

Global site tag (gtag.js) - Google Analytics