现在做一个连续通信程序,我为服务器,别人向我发送一个请求链接,也就是为我建立一个通信链路,我通过这个链路连续不断的向其发送数据,现在发送间隔为一分钟。现在问题是断线的次数太多。只要链路不通。客户端就主动向服务器发送请求建立链路。想请教高手,怎样才能在这个链路上持续不断的发送数据?还有出现这种断线的原因可能是那些或者给提供一些思路,不胜感激!!!
解决方案 »
- 关于委托的一种使用,求大侠知道~~~~急急急!!!!
- 如何让DataTable一列在gridview显示两列
- mdx的helloworld程序一运行就出现异常:FileNotFoundException
- 在c#如何创建数据库?
- 关于DataGridView修改后的数据提交的问题(100分)
- 请问又没有办法看到HttpWebRequest这个对象真实发送出去的内容呢?
- 关于引用System.Web.UI的问题
- 如何使窗口背景图片某种颜色透明?
- 最头疼的问题来了,昨天就没搞定...
- 如何在安装程序中注册windows service,up有分!!
- 将元数据写入文件“I:aaa\obj\Debug\bbbb.exe”时发生错误 --“存储空
- rdlc 饼图 类别,序列设置上后显示不全。。。
如果连接服务的客户端数量不多的话是不是可以用一次就联一次,完事就close了,下次再用再联
udp不通或者阻断的,一般tcp同样也不行,所以...
可以适当的在udp包中添加验证字。
不表示它一定有问题,要看它怎样判断Socket断开,再跟你服务器端比较。比如我用c#写的都是判断接收到空信息就表示连接断开(目前为止我知道的最有效的方法),因此如果用空信息作为握手包就适得其反了。
原则上,首先你要知道是你的服务器主动断开,还是客户端主动断开,再查找断开的原因。握手包只是用来处理网络异常断开的情况,Socket主动断开是可以检测出来的。
定时的客户端向服务器请求,判断是否连接,长时间不用,socket肯定断掉。
你们的服务器也是一两台,但客户端可能分部在全国各地?
一般来说这样是没有完美的解决方案的
我的项目,开始遇到和你一样的问题
开始用KEEPALIVE做,测试1个月后,发现效果不理想
后来自己做心跳包
把整个通信架构都改过来了 用的是非阻塞模式
心跳包发送的时间动态变化,网络越不稳定,时间越短
3个月运行下来,基本可行