日期:2014-05-18  浏览次数:21000 次

长连接的服务器端用什么写比较稳定?异步socket,还是tcplistener?
刚学习写一个网络服务器端,遇到一些问题需要向大家请教

需求大概是这样的:
  我的服务端监听一个端口,然后由一个客户端程序(也在我的服务器上运行)来请求连接这个端口。
连接成功后就开始互发数据,要保持这个连接永远(尽量)不要断掉,如果80秒内没有数据交换,客户端程序会发送探测包,服务端也要回复一个相应的探测包。

现在遇到的问题是:连接一般只能保持几个小时就中断了,一半出现网络连接中断的原因可能有哪些?
如果是80秒内没有数据交换,哪么会不会出现我发的数据他没有收到,他发的探测包我也没收到?
我是用tcplistener实现的,跟这个有没有关系,如果用异步socket,能不能解决问题?

非常感谢大家指导

------解决方案--------------------
断了你就再连一下呗
------解决方案--------------------
看你的需求最好是用异步socket
------解决方案--------------------
帮顶,好久没有做过socket了...
------解决方案--------------------
xuexi
------解决方案--------------------
up
------解决方案--------------------
人呢?都不关心这类问题?
------解决方案--------------------
学习一下socket
------解决方案--------------------
=========================================
这个服务器只会有一个客户端来连接,而且该客户端和这个服务器端是在同一台机器上运行。 

考虑到这种情况,应该用什么实现比较好?
=========================================
如果是我,我不会用socket,因为你的客户端或者服务器在运行时,防火墙都会提示,很容易让人误解。
你这个问题其实就是进程间通讯的问题,如果用vc,有很多好办法,像什么管道之类的。

但是c#实现都比较麻烦,可以考虑用windows消息实现。

还有一个好的办法是用消息队列(MSMQ),但是机器上必须装了这个服务,而windows默认好像是不装的,适合在自己的服务器上用。