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

java socket编程关于client和server连接问题!
请问下高手
client和server是建立一次连接永久有效(知道client退出)好呢?还是client端每发送一次与server端连接一次好?两者效率比较?非常感谢希望详细说明……

------解决方案--------------------
看需求,像数据库驱动就是第一种,因为创建socket 很需要时间
------解决方案--------------------
其实就是socket的通信协议,你要双方都处于长连接就使用TCP模式,要是仅客户端发完就不管那么就使用UDP。
------解决方案--------------------
频繁地建立连接和释放连接是很耗时的,如果消息传递很频繁当然就用第一种了,但是,如果说担心一次连接永久有效会占用资源,可以定义时长啊,超过一定时间没有数据传递就断开连接呗,折中考虑
------解决方案--------------------
这要看需求,
------解决方案--------------------
i使用短连接的情况举例:
烟草与银行接口程序:
烟草的业务有:1单笔查询、2单笔捐款、3查询客户绑定信息
4批量捐款、5查询捐款明细
银行--Socket Server端,烟草--socket Client端,烟草没有必要一直占用着连接,只需要在执行业务的时间发给请求给银行,银行返回结果,socket就可以关闭。

ii使用长连接(永久)的情况举例:
数据库实时同步程序:
分布式系统,全国一个主数据库,各省有分数据库,业务操作在各省数据库中进行。全国中心数据库有一个socket server,各省分别是socket client,当任一数据库数据有CURD任意操作,都会触发client向server发送相关同步请求(实时同步)。

iii折中办法使用举例:
pl/sql 、网站用户登陆的session,都在超过指定时限没有操作就自动关闭(超时)

同意3楼--根据实际情况选择,必要的时候取折中办法。
------解决方案--------------------
探讨

i使用短连接的情况举例:
烟草与银行接口程序:
烟草的业务有:1单笔查询、2单笔捐款、3查询客户绑定信息
4批量捐款、5查询捐款明细
银行--Socket Server端,烟草--socket Client端,烟草没有必要一直占用着连接,只需要在执行业务的时间发给请求给银行,银行返回结果,socket就可以关闭。
……