日期:2014-05-20  浏览次数:20714 次

关于HTTP中长连接的问题。
在j2me的网络编程中,我在使用http连接时使用http.setRequestProperty("Connection", "Keep-Alive");来保持网络的长连接,不知道是否有效,在网上查阅很多资料得出结论是没有效果,但是我很想知道如果没有效果那为什么要将该属性的设置加入到对应的api中。
  还有就是我了解到移动运营商在架设GPRS网络的时候会出现这么一个情况:就是在用户使用GPRS网络连接的时候,如果一定时间没有在连接中通讯数据,运营商就会自动断开这个GPRS连接,这就是心跳包产生的原因。
  最后就是听说不同地方的网络的架设会不一样,这就好像传说中的E网G网之类。对于开发者来说,这些网络是否就是完全透明的么;如果不是,我们在这些不同的网络中应当注意些什么。

------解决方案--------------------
建意你查一下J2ME 实现HTTPS的相关资料
------解决方案--------------------
不了解,但想知道,帮顶。
------解决方案--------------------
socket经常也断,更何况http
------解决方案--------------------
保持不了,换个思路吧!
------解决方案--------------------
http连接
------解决方案--------------------
不了解,但想知道,帮顶。
------解决方案--------------------
http 不能持续连接 C网没有度过 G网和E网实际编码的时候好像不需要区分···
------解决方案--------------------
我是进来学习的。
------解决方案--------------------
可以不停发送 字节吗? 但是不处理,就发送 接受 来 keep alive
或隔几秒 send 一次
------解决方案--------------------
这个属性在真机上是没有用的,http每次都会建立连接
------解决方案--------------------
而且上一次建立的连接在下一次是使用不了的。每次都是new一个新的连接,无法实现所谓的长连接。
------解决方案--------------------
恭喜发财 红包拿来
------解决方案--------------------
探讨
    在j2me的网络编程中,我在使用http连接时使用http.setRequestProperty("Connection", "Keep-Alive");来保持网络的长连接,不知道是否有效,在网上查阅很多资料得出结论是没有效果,但是我很想知道如果没有效果那为什么要将该属性的设置加入到对应的api中。
    还有就是我了解到移动运营商在架设GPRS网络的时候会出现这么一个情况:就是在用户使用GPRS网络连接的时候,如果一定时间没有在连接中通讯数据,运营商就会自动断开这个GPRS连接,这就是心跳包产生的原因。
    最后就是听说不同地方的网络的架设会不一样,这就好像传说中的E网G网之类。对于开发者来说,这些网络是否就是完全透明的么;如果不是,我们在这些不同的网络中应当注意些什么。

------解决方案--------------------
"http 不能持续连接",我才知道了。。。。。。。

------解决方案--------------------
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中非标准的接口,否则就丢失了可移植性。
------解决方案--------------------
楼上高人!!
http不能实现长连接!
------解决方案--------------------
探讨
"http  不能持续连接",我才知道了。。。。。。。


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