3875|8

68

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

GPRS服务器端信息发送的问题 [复制链接]

大家有没有碰到过客户终端采用GPRS(TCP)连接了服务器进行通讯,但有一段时间客户可能进入了地下室或者电梯里面或者信号屏蔽很厉害的大楼里面不出来,这时候服务器上该客户的连接还是存在的并且可以往下发送信息的,但这个信息到不了客户那里,而且服务器上WSASend函数也不会报错,有没有办法知道这时候服务器发送数据是失败的呢?

客户端会采用心跳的方式保持跟服务器的通讯线路,服务器会定期检查客户端最后通讯的时间,如果超出一定的时间(比如2~3个心跳时间间隔之后)的话说明这个客户端已经无法再次发送信息了,服务器会把它踢掉。但现在的问题是在这2~3个心跳间隔之内服务器要给客户端发送数据的话,服务器上看起来是发送成功了的(WSASend函数不会报错),但客户端确实是收不到的。有办法知道服务器下发的数据是否正常吗?

服务器采用的IOCP,除了让终端每接收一次服务器的信息都要有一个回执(也就是服务器检测发送超时没有回执回复)之外还有别的办法吗?操作系统在处理TCP信息的时候有这方面的错误吗?

TCP通讯是双向握手和重发的,上面我说的情形终端侧肯定掉线了,原则上说的话,服务器上应该发不下去信息的(因为对方的端口已经过期了,只是移动还未给T掉而已,所以服务器上还正常发信息)。

最新回复

我想问题我已经说的很清楚。  详情 回复 发表于 2010-1-27 21:10
点赞 关注

回复
举报

63

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
这个办法很多。

1、双方通信时,你可以人为添加 握手协议。比如接受方 接收到任何信息,可以让其先立即返回ASK。
这样服务器发送信息,超过一定时间没收到ASK,就可以认为已经断链啦,自己就知道了啊。

2、既然采用TCP通讯,你可以实现IP的PING,比如超过多少时间,PING下
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
lz问题如何?
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

4
 
我现在碰到和你相似的问题,但不是同一个问题?一直考虑如何解决。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 1 楼 kyzf 的回复:
这个办法很多。

1、双方通信时,你可以人为添加 握手协议。比如接受方 接收到任何信息,可以让其先立即返回ASK。
这样服务器发送信息,超过一定时间没收到ASK,就可以认为已经断链啦,自己就知道了啊。

2、既然采用TCP通讯,你可以实现IP的PING,比如超过多少时间,PING下

我想的是不用再另外开销(比如再另外增加一个信息列表,定期检测这个列表中的信息是否有回复或者是否超时,然后通知其他线程干活什么的),底层通讯中是否能够捕获到对方的错误信息(比如上层通讯的#10054、#10056等等这样的错误信息)。

看来到现在为止是没有办法了,只有增加一个信息列表来检测是否超时或正常发送。要捕获错误信息只有等移动侧将通讯信道T掉才会出来。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 3 楼 yaxiya 的回复:
我现在碰到和你相似的问题,但不是同一个问题?一直考虑如何解决。

你碰到什么问题,可以说出来大家一起讨论。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

7
 
lz的问题一个是信号不好。
第二可能是不是专线专用,所以就出现了这个问题。
如果是信号不好,那实在是没有好的解决办法。
如果是线路不好(移动提供的线路),那可以在服务器端添加一个socket维护,如果长时间不能接收或者发送数据,那么服务器端应该主动断掉某一个socket,然后重新建立新的socket连接。
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 6 楼 yaxiya 的回复:
lz的问题一个是信号不好。
第二可能是不是专线专用,所以就出现了这个问题。
如果是信号不好,那实在是没有好的解决办法。
如果是线路不好(移动提供的线路),那可以在服务器端添加一个socket维护,如果长时间不能接收或者发送数据,那么服务器端应该主动断掉某一个socket,然后重新建立新的socket连接。

哥哥,已经说了服务器端会通过终端侧的心跳来判断。但现在问题在于服务器侧判断终端侧掉线的过程当中需要给这个貌似已经掉线的终端发送信息(肯定是发送不到终端上的),怎么才能最好的在服务器上知道这个信息已经发送到终端上或者失败的错误信息。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

9
 
我想问题我已经说的很清楚。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表