蓝森林首页 | 返回主页 | 本站地图 | 站内搜索 | 联系信箱 |
 您目前的位置:首页 > 自由软件 > 技术交流 > 应用编程


    

蓝森林 http://www.lslnet.com 2006年6月6日 10:18


!!!!!!tcp/ip长连接编程问题请教!

问题如下:A系统与B系统互连,接口已经定义为长连接模式。
功能如下:A系统做server被动建立连接,B做client主动建立连接,此部分不考虑,容易实现。现在的问题是:A要能不断接受B发来的请求消息,A处理完之后要立即给B回应答包,并且A每天凌晨1点钟要主动给B发对帐请求包,和B进行对帐。
目前我是这么考虑的:采用无阻塞模式,

长连接建立;
WHILE(1)
{
            IF(时间==1点)
        {
                               对帐;
        }
            ELSE
            {
                             超时10秒判断;
                              RECV收请求消息;
                    FORK处理报文;
        }
}

请问有没有比较好的实现方法!!!
请大虾指教!

另外:
斑竹大哥能不能组织讨论一下:TCP/IP点到点长连接编程模式,现在用的很多呀,但书上讲得很少,如:同步长连接,异步长连接双工,异步长连接单工等SERVER/CLIENT编程模式!!!谢谢!!!

!!!!!!tcp/ip长连接编程问题请教!

请斑竹指教!谢谢!

!!!!!!tcp/ip长连接编程问题请教!

1、长连接建立;
WHILE(1)
{
IF(时间==1点)
{
对帐;
}
ELSE
{
超时10秒判断;
RECV收请求消息;
FORK处理报文;
}
}

这个模式可以用。建议else里面处理接受和fork处理业务用select或许好一点。

2、
能不能组织讨论一下:TCP/IP点到点长连接编程模式,现在用的很多呀,但书上讲得很少,如:同步长连接,异步长连接双工,异步长连接单工等SERVER/CLIENT编程模式!!!谢谢!!!

找个建议非常好。更着这个帖子的后面,有兴趣的参与讨论!

!!!!!!tcp/ip长连接编程问题请教!

蓝色键盘兄,能不能说的更详细一点?以前你有没有类似的开发经历?能不能与小弟共享一下,感激不禁!donghu@sina.com.cn!

!!!!!!tcp/ip长连接编程问题请教!

好像这种问法不严谨,或者应该问两种方式各有什么弊端。我先说出我肤浅的想法:长连接不用一次一次的建立连接,应该比较省事,但是当请求上送的报文很多的时候,回应是不是仍然能保证上送的次序呢?短连接除了麻烦点,一定可以保证次序。是这样的么?望高手赐教。

!!!!!!tcp/ip长连接编程问题请教!

我觉得长连接和短连接的区别应该主要在连接的时间上

短连接的话操作完断开
此时sccket可以被其它程序使用
但是每次启动一个socket和关闭一个socket都要一定时间
以及socket被释放后也不是会立即可以用的
要等待一段时间

长连接连接时间很长,没有了上面的socet申请等时间损失,如果要发送的数据频繁的话性能会更高
但是它占用系统的socket资源

并且需要自己处理网络异常情况
如对方网络断连时,这时send还可以成功(包只是被放到发送缓冲区中),但对方无法接收到

!!!!!!tcp/ip长连接编程问题请教!

无双斑竹说得很对,但小弟认为其中还有一个很 重要得区别:
短连接适合于:多个客户端同时和一个服务端通信,服务端作并发服务器,这种用法很常见,书上讲的也最多;不外乎:fork,pthread_create,select等几种方法;并且短连接多采用同步方式收发。
长连接:一种很重要得连接方式,大家一般都认为长连接用的很少,非也!!电信运营商的语音充值平台vc与其营帐系统互连时,基本都采用长连接!连接建立之后,就没有客户端和服无端的区分,双方可以随时收发消息。因此,起消息收发一般都是异步的。处理的流程与短连接差别比较大。
我想问的问题就是哪位大侠有类似的开发心得,大家共同讨论一下!

谢谢!!!

!!!!!!tcp/ip长连接编程问题请教!

也就是说,短连接中服务端一般是只作服务端,客户端只作客户端,很少有服务端同时要被动接受客户端发来得数据,又要主动给客户端发送请求消息!但长连接中就不存在这样的问题,收发是分开的,想发就发,想收就收!我想问的是要完成这种功能都有哪些好方法?
谢谢!

!!!!!!tcp/ip长连接编程问题请教!

偶以前看到一个短信网关的设计是这样

但也不全是
那个短信网关的收发都不是随意的
而都是以响应的形式

如果楼上想做到完全异步的话可能不是很有必要吧,因为每一个包都有它的返回要求,全部异步的话处理起来会很麻烦

!!!!!!tcp/ip长连接编程问题请教!

如果用长连接的话,建议双方发链路检测包以探测网络状况。

通是,对于大量客户端连接的情况,可以考虑用段连接。

!!!!!!tcp/ip长连接编程问题请教!

同意蓝色兄
大客户连接时使用短连接

因为每个连接除了使用系统资源外
进程资源也使用

如果每一个连接都保留到客户关闭
那么服务端的性能就会很慢

!!!!!!tcp/ip长连接编程问题请教!

算了,可能我是孤陋寡闻了,huawei的Tellin中的mml
很多都是采用的长连接,vc系统作为服务端同时接受很多
客户的充值请求,同时在socket中作为客户端,通过事先
建立的长连接与营帐系统进行消息的交互,这种消息交互
有可能是huawei主动发起的,也有可能是营长系统发起
的(当然,有严格的报文定义)。营长系统作为长联接的
服务端要能并发的处理huawei的请求,这些都是现实中
用的很多的呀!!!金卡工程中也有类似的用法!哎!问个
问题真的很难!!!!!!!!!!!!!!!!!!!!!
!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!

!!!!!!tcp/ip长连接编程问题请教!

营帐我也做过

但是营账的客户端不是很多

可能就10几个
这种时候使用长连接没有问题,因为socket描述符够用
而且不必每次连接都认证

请问如何建立长连接呀?

长连接的编程与短连接的编程,区别在何处
已经查询到其他帖子,得到了基本答案




Copyright © 1999-2000 LSLNET.COM. All rights reserved. 蓝森林网站 版权所有。 E-mail : webmaster@lslnet.com