java 长连接的实现
txt32 因为爱心,流浪的人们才能重返家园;因为爱心,疲惫的灵魂才能活力如初
渴望爱心,如同星光渴望彼此辉映;渴望爱心,如同世纪之歌渴望永远被唱下去
梁应宏 引言 TCP 长连接服务在传统的智能网应用中扮演着重要的角色
由于其传输的高效率,在智能网SCP 和 IP 的各个模块之间,大量使用了这种服务
例如,SS7gateway 与 SCF、 SCF 与 INES、INES 与外部节点、CN 与 VN,等等
相反,在各种WEB 应用中,广泛使用TCP 短连接服务
基于HTTP 承载的各种应用协议,如HTML, XML, SOAP 等,多数使用TCP 短连接服务
原因有二:一是这些HTTP 协议的数据包较大,传输所占的开销较大,连接建立的开销相对较小
此时使用长连接对性能的提升并不明显
二是相对于长连接而言,无论是对于客户端还是服务端,短连接的实现难度要低很多
以网通水平业务平台SPGW 为例,多数对外接口采用HTTP/XML/SOAP 协议和短连接
然而,出于性能的考虑,还有两个接口采用TCP 长连接: l 东向接口(SPGW-DSMP): SCCP 协议使用二进制消息
l 南向接口(SPGW-SMSC): SPGW 与短消息网关SMSC 之间的SM7 协议使用二进制消息
从Java 开发语言的角度,短连接的使用比较简单
因为Java 的IO 库已经提供了一个httpConnection 类,成熟可靠,使用方便
但是,对于TCP 长连接的使用,Java 的 IO 库并没有直接的支持
本文将探讨对TCP 长连接服务的一般需求和我们的实现考虑
以下也简称TCP 长连接服务为TCP 服务
需求 具有网络编程经验的人都知道,TCP 程序的编写是“易学难精”
很容易编写一个TCP 程序,具有一定的功能并且在少数正常情况下可以运行
但是,要想让它在各