- 浏览: 724537 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (198)
- struts 相关 (8)
- hibernate相关 (5)
- JSP相关 (3)
- javascript相关 (9)
- spring相关 (0)
- J2SE相关 (25)
- MSSQL (6)
- web服务器相关 (3)
- html相关 (8)
- Ajax相关 (1)
- VS2008 (2)
- ArcGIS Web server (2)
- WebService (5)
- ANT (4)
- Ajax (5)
- IDE (2)
- 网络相关知识点 (3)
- 算法相关 (3)
- 数据库相关 (8)
- JUnit (1)
- 搜索引擎 (1)
- JAVA模式 (11)
- Dorado (4)
- JXL (2)
- ACCESS (1)
- PHP (3)
- Mysql 数据库 (2)
- J2EE (11)
- Tomcat (1)
- Oracle (15)
- WebLogic (1)
- Eclipse (4)
- Flex (1)
- java 路上 (1)
- IIS服务器 (1)
- Pushlet (2)
- Log 4j (1)
- XML (2)
- JDOM (1)
- RMI (0)
- 常用 bat 命令 (1)
- velocity (2)
- Linux (5)
- PL/SQL (2)
- SQL (5)
最新评论
-
virtualspider:
请问我用了volatile不copy到线程内存里面的话,我怎么 ...
java中关键字volatile的作用 -
saiarmuluo:
不错,最近在看并发的知识一直没弄懂这块,谢谢!
java中关键字volatile的作用 -
java大神dxg:
Servlet、Filter和Listener -
mao_siyu:
多谢楼主 讲的很明白~~
java中关键字volatile的作用 -
qiangcz:
angole 写道jgroups 写道volatile告诉jv ...
java中关键字volatile的作用
Java中的”推”技术 [/size]
bromon原创 版权所有
在一般的B/S程序中(最典型的是web服务),工作的方式是客户端(brower)向服务器端(server)发送一个请求,服务器端响应这个请求并发回客户端所请求的数据。在这个过程中服务器端扮演的是一个被动响应的角色,一般的情况下,服务器端是不会主动向客户端写数据的。由于HTTP是一个无连接的协议,也就是说当服务器端完成对客户端的响应后,双方的连接就断开了,直到下一次客户端发出请求时再重新建立连接。这样的HTTP协议是节省网络资源的,但是也给我们带来了一些麻烦,比如客户端不能实时探查服务器端的数据变化,不能作出及时的响应。所以当我们在做一些需要客户端和服务器端互相响应的程序时(比如聊天室、web短信息),不得不在客户端不停的刷新页面,以求获得最新的数据,这样做增加的服务器的负担。如果服务器能在数据发生变化的时候主动向客户端写数据,那么问题就解决了,这就是所谓的“推”技术。
在java中,客户端主动向服务器端申请数据,叫做“拉”;服务器主动向客户端写数据,叫做“推”。我们可以在服务器端打开某个端口,监听客户端的连接,就可以向客户端随意写数据,这是我们做C/S程序的原理,“推”技术采用相同的原理,只是客户端是浏览器而已,只要我们按照浏览器能够识别的格式向客户端写数据,客户端就可以通过HTTP与服务器建立连接,并获得数据。
HTTP是一个很庞大的协议,但是我们只需要用到很小一部分。最重要的是要知道按照什么格式写数据,浏览器才认识。当我们浏览一个网站的某一页,比如www.sohu.com/page.htm的时候,我们是在向服务器发送这样一个信息:
运行:java myServer
然后打开浏览器,输入http://localhost:800,将会返回一个”hello,world”
以上就是一个“推”技术的简单实现,将它扩展一下,比如加入多线程响应,就可以实现无刷新的聊天室,请读者自己考虑。[/size]
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bromon/archive/2004/06/22/22630.aspx[/size]
bromon原创 版权所有
在一般的B/S程序中(最典型的是web服务),工作的方式是客户端(brower)向服务器端(server)发送一个请求,服务器端响应这个请求并发回客户端所请求的数据。在这个过程中服务器端扮演的是一个被动响应的角色,一般的情况下,服务器端是不会主动向客户端写数据的。由于HTTP是一个无连接的协议,也就是说当服务器端完成对客户端的响应后,双方的连接就断开了,直到下一次客户端发出请求时再重新建立连接。这样的HTTP协议是节省网络资源的,但是也给我们带来了一些麻烦,比如客户端不能实时探查服务器端的数据变化,不能作出及时的响应。所以当我们在做一些需要客户端和服务器端互相响应的程序时(比如聊天室、web短信息),不得不在客户端不停的刷新页面,以求获得最新的数据,这样做增加的服务器的负担。如果服务器能在数据发生变化的时候主动向客户端写数据,那么问题就解决了,这就是所谓的“推”技术。
在java中,客户端主动向服务器端申请数据,叫做“拉”;服务器主动向客户端写数据,叫做“推”。我们可以在服务器端打开某个端口,监听客户端的连接,就可以向客户端随意写数据,这是我们做C/S程序的原理,“推”技术采用相同的原理,只是客户端是浏览器而已,只要我们按照浏览器能够识别的格式向客户端写数据,客户端就可以通过HTTP与服务器建立连接,并获得数据。
HTTP是一个很庞大的协议,但是我们只需要用到很小一部分。最重要的是要知道按照什么格式写数据,浏览器才认识。当我们浏览一个网站的某一页,比如www.sohu.com/page.htm的时候,我们是在向服务器发送这样一个信息:
引用
GET /page.htm HTTP/1.0
From: someuser@somehost.com
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.0; DigExt)
空行
其中第一行是我们要关注的,它由空格分隔成三部分,一是请求的方法(get),二是请求的页面,三是HTTP的版本。如果请求无误,服务器将返回如下信息:
From: someuser@somehost.com
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.0; DigExt)
空行
引用
HTTP/1.0 200 OK
Date: Thu, 8 Oct 2002 14:23:11 GMT
Content-Type: text/html
Content-Length: 1644
<html>
<body>
<h1>Hello world!</h1>
(其他内容)...
</body>
</html>
第一行表示连接成果,然后是返回数据的属性,从<html>开始才是返回给浏览器返回的数据。在我们自己的程序中只需要按照上述格式写数据,就可以实现一个自己的简易web服务器。下面是一个hello,world的例子:
Date: Thu, 8 Oct 2002 14:23:11 GMT
Content-Type: text/html
Content-Length: 1644
<html>
<body>
<h1>Hello world!</h1>
(其他内容)...
</body>
</html>
//myServer.java import java.io.*; import java.net.*; public class myServer { static ServerSocket server=null; static OutputStreamWriter ow=null; public static void main(String args[]) { int port=800; try { server=new ServerSocket(port); }catch(Exception e) { System.out.println(e); } while(true) { try { Socket socket=server.accept(); ow=new OutputStreamWriter(socket.getOutputStream()); ow.write("HTTP/1.0 200 ok "); ow.write("Content-Type:text/html "); ow.write("<html><body>"); ow.write("hello,world"); ow.write("</body></html>"); ow.flush(); socket.close(); }catch(Exception e) { System.out.println(e); } } } }编译:javac myServer.java
运行:java myServer
然后打开浏览器,输入http://localhost:800,将会返回一个”hello,world”
以上就是一个“推”技术的简单实现,将它扩展一下,比如加入多线程响应,就可以实现无刷新的聊天室,请读者自己考虑。[/size]
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bromon/archive/2004/06/22/22630.aspx[/size]
发表评论
-
什么是内存泄露问题?
2010-05-21 10:23 2195·简介....................... ... -
Java同步、异步相关知识点
2009-11-12 18:02 5197一、关键字: thread( ... -
java读取properties文件
2009-10-21 08:45 1389一. .properties 文件的形式 引用# 以下为服务 ... -
JAVA推技术聊天室的实现
2009-10-14 17:37 3343基于推技术的聊天室在国内现在已经比较常见。这种聊天室最大的特点 ... -
JAVA iterator 用法
2009-10-13 11:33 3268引用迭代器(Iterator) 迭代器是一种设计模式,它 ... -
java 获取MAC地址
2009-10-06 17:59 1137获取MAC地址: package com; imp ... -
java 各种类型初始值
2009-09-27 09:49 2068基本变量:byte,short,int,long 初始化为0 ... -
Java实现的拦截器模型
2009-09-18 11:40 2957拦截器在在流行的开源框架中很常见,依赖的技术就是Java的 ... -
JAVA的日期时间相减问题
2009-09-12 12:44 3438import java.util.Date;import ja ... -
线程和进程的区别
2009-09-07 19:12 1206进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该 ... -
java中金额的精确计算问题
2009-08-25 13:26 3531import java.math.BigDecimal; ... -
读取propery文件
2009-06-30 11:30 1082http://www.iteye.com/topic/3808 ... -
获取用户输入I/O
2009-06-17 10:22 1144import java.io.BufferedReader ... -
获取 JAVA 程序当前的工作目录
2009-06-16 16:43 2590获取 JAVA 程序当前的工作目录 File file = ... -
eclipse导出jar 并制作成 bat直接运行
2009-06-16 15:29 3719在eclipse中导出生成的jar后,编写一个bat文件进行运 ... -
EJB 与 javabean 的区别
2009-05-17 22:05 2113文章出自:http://killazy.iteye.com/b ... -
java 中数据类型转换
2009-05-17 19:02 1845Java:数据类型转换。 1.J ... -
覆盖与重载
2009-05-17 17:34 1018[恶补JAVA]关于覆盖与重 ... -
java 面试必会知识点
2009-05-09 16:46 1566http://book.51cto.com/art/20090 ... -
JDK 配置参数
2009-05-06 21:06 3275JAVA环境变量的设置和对 ...
相关推荐
java-Push开源实时消息推送系统
这个压缩包里面包含三个DOC文件:1.iphone推送java实现.doc 2.iphone推送简单JAVA示例.doc 3.实现iphone推送服务端原理.doc 三个文档很全面的指导学者学习怎么用java实现ios推送功能,不仅仅是讲解怎么实现,还讲解...
用Java实现的推箱子小游戏,运用了JavaSwing和XML技术
java中邮箱推送的一个示例,欢迎各位前来下载讨论
这是一个基于Java+Swing等技术的推箱子小游戏的设计与实现,包含全部源代码以及论文和答辩PPT以及项目部署过程等,可以用于毕业设计或者课程设计或者学年设计等使用。需要的朋友可以下载哦~
Java信鸽推送使用说明
很好的java代码,学习java技术的人一定要看哦 好好研究一下吧
java applet方式实现服务器推技术 ,温度监控,dos下打开服务端,tomcat下部署,运行,相当震撼!有介绍!
利用服务器推送技术实现站内短消息(java) 让client与service建立一个长连接,不用client手动request,service会自动response,当有好友在线的时候,会自动把好友的信息加载到select里,点击好友发送短消息时,会在...
通过推箱子游戏中使用的Java技术,让我能够更加熟练的使用Eclipse。同时了解相关运行环境的配置。将理论知识和实际操作结合起来。达到学以致用的目的。网上资料的查询极大的提高了我的自学能力。希望经过此次设计,...
1、游戏面板生成显示 2、地图生成算法 3、人物移动算法 4、播放背景音乐 5、箱子移动算法 6、全部箱子移动到指定位置,才算游戏过关 需要技术指导,写项目程序,等更多服务请加微信xiaoxuzhu01联系博主
flex + java 推技术示例, 三种模式调用java后台 三种调用java方式, 推技术示例
APNS(Apple Push Notification Service)苹果推送通知服务。该技术由苹果公司提供的APNS服务。工作原理:首先,APNS会对用户进行物理连接认证,和设备令牌认证(简言之就是苹果的服务器检查设备里的证书已确定其为...
java消息推送技术中需要的js插件,主要用于监听通道中的数据
Flex + java 推送技术示例, Flex 调用 java 后台的三种模式, 示例可以运行, 修改下工程配置就可以 .
在Java技术中,值得关注的还有JavaBeans,它是一个开放的标准的组件体系结构,它独立于平台,但使用Java语言。一个JavaBean是一个满足JavaBeans规范的Java类,通常定义了一个现实世界的事物或概念。一个JavaBean的...
flash XMLSocket java 通信(采用服务器推技术 解决了乱码 )本东西属于原创
能学到什么:基于Java Swing技术的桌面应用开发技术。 适合人群:Java初学者、对Swing技术感兴趣的Java开发人员、准备毕业设计的大学生 阅读建议:资源包含了游戏的完整代码,按照开发步骤划分。也可以跟着教学视频...
使用Java实现高并发推送服务.pdf
高校推免报名系统代码 java高校推免报名系统代码 基于SSM的高校推免报名系统代码 1、高校推免报名系统的技术栈、环境、工具、软件: ① 系统环境:Windows/Mac ② 开发语言:Java ③ 框架:SSM ④ 架构:B/S、MVC ⑤ ...