关于HTTP中长连接的问题。

guirenwang 2010-01-28 08:04:44
在j2me的网络编程中,我在使用http连接时使用http.setRequestProperty("Connection", "Keep-Alive");来保持网络的长连接,不知道是否有效,在网上查阅很多资料得出结论是没有效果,但是我很想知道如果没有效果那为什么要将该属性的设置加入到对应的api中。
还有就是我了解到移动运营商在架设GPRS网络的时候会出现这么一个情况:就是在用户使用GPRS网络连接的时候,如果一定时间没有在连接中通讯数据,运营商就会自动断开这个GPRS连接,这就是心跳包产生的原因。
最后就是听说不同地方的网络的架设会不一样,这就好像传说中的E网G网之类。对于开发者来说,这些网络是否就是完全透明的么;如果不是,我们在这些不同的网络中应当注意些什么。
...全文
1710 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
vvilp 2011-09-14
  • 打赏
  • 举报
回复
可以实现长连接的(comet技术),但如设置Keep-Alive有个问题,在tcp链接空闲时间大于keep-alive的值就会默认断开链接(http默认300),故有长轮询机制(减少链接空闲时间)但实时性不强,故有pushlet这个基于服务器推的技术,楼主可以在网上搜下
====================================================================================================
comet 框架有两种方式
1 ajax轮询
2 iframe 流

pushlet 也是使用ajax轮询的方式 实现效果上的长连接

iframe 方式有一些缺点。页面会一直处于加载状态

具体请查看ibm 上 comet资料

所以现在http还没有比较好的长连接方式
lq123456789000 2011-05-11
  • 打赏
  • 举报
回复
keep-alive的作用多用于例如文件下载、图片下载时使用(每次请求建立tcp链接比较费),下载完链接空闲,超过设定的时间就自动断开链接,
pushlet有问题,就是效率问题,一个用户对应一个长链接,长时间不释放,非实时性要求强的不要使用
lq123456789000 2011-05-11
  • 打赏
  • 举报
回复
可以实现长连接的(comet技术),但如设置Keep-Alive有个问题,在tcp链接空闲时间大于keep-alive的值就会默认断开链接(http默认300),故有长轮询机制(减少链接空闲时间)但实时性不强,故有pushlet这个基于服务器推的技术,楼主可以在网上搜下
lq123456789000 2011-05-11
  • 打赏
  • 举报
回复
可以实现长连接的(comet技术),但如设置Keep-Alive有个问题,在tcp链接空闲时间大于keep-alive的值就会默认断开链接(http默认300),故有长轮询机制(减少链接空闲时间)但实时性不强,故有pushlet这个基于服务器推的技术,楼主可以在网上搜下
visoeclipse 2010-02-24
  • 打赏
  • 举报
回复
引用 15 楼 hsf_1982 的回复:
HTTP/1.0以后的版本,都是支持长连接的,就像楼主所说:http.setRequestProperty("Connection", "Keep-Alive");其实这种操作时在设置HTTP报文的消息头字段:Connection: Keep-Alive。但问题在于服务器端对于长连接的实现,特别是在对长连接的维护上。FTP协议及SMTP协议中有NOOP消息,这个就可以认为是心跳报文,但HTTP协议没有类似的消息,这样服务器端只能使用超时断开的策略来维护连接。设想超时时间非常短,那么有效空闲时间就非常短,换句话讲:一旦链路上没有数据发送,服务器端很快就关闭连接。

对于第二个问题,我也不清楚,同时就个人认为是正确的。

由于没有从事过J2ME的开发,所以很多东西都不清楚。但如果是SOCKET编程,也就是说基于TCP/IP协议进行通讯,同时Socket接口实现是JDK调用手机操作系统的TCP/IP协议接口,那么网络的架设对于应用层开发人员而言是透明的。移动运营商提供各种无线网的统一入网标准;手机开发商按入网标准实现手机通讯功能,也就是物理层与链路层的实现;同时手机开发商会开发自己的操作系统,其中包括TCP/IP协议栈实现,这就是网络层及传输层实现;并开发及提供符合标准的JDK,而其中就有Socket接口,即为TCP接口调用。
对于服务提供商,就是我们这样的只要知道如何使用JDK中的SOCKET开发就够了。
但是切忌使用JDK中非标准的接口,否则就丢失了可移植性。

支持
zhlwwj1314 2010-02-23
  • 打赏
  • 举报
回复
引用 15 楼 hsf_1982 的回复:
HTTP/1.0以后的版本,都是支持长连接的,就像楼主所说:http.setRequestProperty("Connection", "Keep-Alive");其实这种操作时在设置HTTP报文的消息头字段:Connection: Keep-Alive。但问题在于服务器端对于长连接的实现,特别是在对长连接的维护上。FTP协议及SMTP协议中有NOOP消息,这个就可以认为是心跳报文,但HTTP协议没有类似的消息,这样服务器端只能使用超时断开的策略来维护连接。设想超时时间非常短,那么有效空闲时间就非常短,换句话讲:一旦链路上没有数据发送,服务器端很快就关闭连接。

对于第二个问题,我也不清楚,同时就个人认为是正确的。

由于没有从事过J2ME的开发,所以很多东西都不清楚。但如果是SOCKET编程,也就是说基于TCP/IP协议进行通讯,同时Socket接口实现是JDK调用手机操作系统的TCP/IP协议接口,那么网络的架设对于应用层开发人员而言是透明的。移动运营商提供各种无线网的统一入网标准;手机开发商按入网标准实现手机通讯功能,也就是物理层与链路层的实现;同时手机开发商会开发自己的操作系统,其中包括TCP/IP协议栈实现,这就是网络层及传输层实现;并开发及提供符合标准的JDK,而其中就有Socket接口,即为TCP接口调用。
对于服务提供商,就是我们这样的只要知道如何使用JDK中的SOCKET开发就够了。
但是切忌使用JDK中非标准的接口,否则就丢失了可移植性。

解释的相当到位
dongbangws 2010-02-23
  • 打赏
  • 举报
回复
IP不是固定的。。。
yangc_83 2010-02-22
  • 打赏
  • 举报
回复
楼上高人!!
http不能实现长连接!
hsf_1982 2010-02-22
  • 打赏
  • 举报
回复
HTTP/1.0以后的版本,都是支持长连接的,就像楼主所说:http.setRequestProperty("Connection", "Keep-Alive");其实这种操作时在设置HTTP报文的消息头字段:Connection: Keep-Alive。但问题在于服务器端对于长连接的实现,特别是在对长连接的维护上。FTP协议及SMTP协议中有NOOP消息,这个就可以认为是心跳报文,但HTTP协议没有类似的消息,这样服务器端只能使用超时断开的策略来维护连接。设想超时时间非常短,那么有效空闲时间就非常短,换句话讲:一旦链路上没有数据发送,服务器端很快就关闭连接。

对于第二个问题,我也不清楚,同时就个人认为是正确的。

由于没有从事过J2ME的开发,所以很多东西都不清楚。但如果是SOCKET编程,也就是说基于TCP/IP协议进行通讯,同时Socket接口实现是JDK调用手机操作系统的TCP/IP协议接口,那么网络的架设对于应用层开发人员而言是透明的。移动运营商提供各种无线网的统一入网标准;手机开发商按入网标准实现手机通讯功能,也就是物理层与链路层的实现;同时手机开发商会开发自己的操作系统,其中包括TCP/IP协议栈实现,这就是网络层及传输层实现;并开发及提供符合标准的JDK,而其中就有Socket接口,即为TCP接口调用。
对于服务提供商,就是我们这样的只要知道如何使用JDK中的SOCKET开发就够了。
但是切忌使用JDK中非标准的接口,否则就丢失了可移植性。
冬天程序员 2010-02-22
  • 打赏
  • 举报
回复
引用 14 楼 zhouyongyang621 的回复:
"http  不能持续连接",我才知道了。。。。。。。


老杨,好巧啊,这里也能遇到,世界真小
梦_枫 2010-02-22
  • 打赏
  • 举报
回复
"http 不能持续连接",我才知道了。。。。。。。
凡员外 2010-02-22
  • 打赏
  • 举报
回复
引用楼主 guirenwang 的回复:
    在j2me的网络编程中,我在使用http连接时使用http.setRequestProperty("Connection", "Keep-Alive");来保持网络的长连接,不知道是否有效,在网上查阅很多资料得出结论是没有效果,但是我很想知道如果没有效果那为什么要将该属性的设置加入到对应的api中。
    还有就是我了解到移动运营商在架设GPRS网络的时候会出现这么一个情况:就是在用户使用GPRS网络连接的时候,如果一定时间没有在连接中通讯数据,运营商就会自动断开这个GPRS连接,这就是心跳包产生的原因。
    最后就是听说不同地方的网络的架设会不一样,这就好像传说中的E网G网之类。对于开发者来说,这些网络是否就是完全透明的么;如果不是,我们在这些不同的网络中应当注意些什么。
GPRS
tuerqizhou 2010-02-21
  • 打赏
  • 举报
回复
恭喜发财 红包拿来
jiejieguita 2010-02-10
  • 打赏
  • 举报
回复
而且上一次建立的连接在下一次是使用不了的。每次都是new一个新的连接,无法实现所谓的长连接。
thiwed 2010-01-30
  • 打赏
  • 举报
回复
我是进来学习的。
hy19880714 2010-01-30
  • 打赏
  • 举报
回复
http 不能持续连接 C网没有度过 G网和E网实际编码的时候好像不需要区分···
ublearning 2010-01-30
  • 打赏
  • 举报
回复
这个属性在真机上是没有用的,http每次都会建立连接
geyiaffh 2010-01-30
  • 打赏
  • 举报
回复
可以不停发送 字节吗? 但是不处理,就发送 接受 来 keep alive
或隔几秒 send 一次
重返春季 2010-01-30
  • 打赏
  • 举报
回复
不了解,但想知道,帮顶。
凡员外 2010-01-29
  • 打赏
  • 举报
回复
http连接
加载更多回复(4)

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧