BBS水木清华站∶精华区
发信人: kasper (回来了), 信区: Java
标 题: Re: java.lang.OutOfMemoryError?
发信站: BBS 水木清华站 (Wed Jan 17 17:06:56 2001)
【 在 vago (无中生有) 的大作中提到: 】
∶ 面向持久连接的client/server程序并不意味着一定要使用持久的socket连接,这是
∶ 两个层面的东西,事实上,设计良好的c/s程序一开始就要定义自己的通讯协议,同样
∶ 也要决定是否连接是否有状态,只要可以追踪client的状态历史就可以被认为是面向
∶ 连接的。
∶ 应用程序的通讯协议完全取决于程序自身的需要和设计,其可以在任何一种底层通讯
∶ 协议上进行封装,无论是tcp还是http(事实上http也是在tcp之上的协议)。
hehe, 你说的没错,逻辑上连接(也就是session)和TCP连接不是不个东西,否则OSI也
在传输层上面再有一个会话层(session layer),就因为session是更高一层的东西。
但一般来说,对基于TCP/IP的应用来说,因为TCP/IP没有Session控制支持,一个逻辑
session对应一个tcp connection是最直观最有效的做法,所以大部分一般要求的应用
层协议都是这样的(比如telnet, ftp(有点不一样),POP3,IMAP...)。
这可以说是个设计思想的问题,TCP/IP这种相对简单化的approach也是其战胜OSI/ISO
的一个原因。
当然你是可以有别的方案,比如直接用Servlet支持的HTTP Session支持,或者自己设
计一套类似的协议,或者用udp,但都有一些问题。比如HTTP的主要问题是overhead比
较大,每次操作建立新的连接,Server的TCP层负载大,同时响应速度慢(TCP的三次握
手)。而且HTTP的Session控制是非标准的,Cookie based,URL-rewriting based等各种
方法,互不兼容。udp的问题在于这个协议太初级了,丢包、乱序都得自己处理,适合
游戏、icq这样的对这些要求不高的应用。
∶ 提问题的兄弟的程序无疑是有状态的,他要的用户连接无疑是终端用户登录建立的连接
∶ 和tcp的socket的连接没有多大的逻辑关系,通过一对一的socket的持久连接的确可以
∶ 满足应用程序的功能要求(很直观嘛),但另外我们另外还有n种方案满足他的要求,
∶ ...................
--
你我,不过是尘埃。
[25C
※ 修改:·kasper 於 Jan 17 17:07:39 修改本文·[FROM: 166.111.136.252]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.252]
BBS水木清华站∶精华区