GPRS服务器端信息发送的问题

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

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

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

TCP通讯是双向握手和重发的,上面我说的情形终端侧肯定掉线了,原则上说的话,服务器上应该发不下去信息的(因为对方的端口已经过期了,只是移动还未给T掉而已,所以服务器上还正常发信息)。
...全文
238 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
亚细亚 2010-01-27
  • 打赏
  • 举报
回复
我想问题我已经说的很清楚。
所得寺内 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yaxiya 的回复:]
lz的问题一个是信号不好。
第二可能是不是专线专用,所以就出现了这个问题。
如果是信号不好,那实在是没有好的解决办法。
如果是线路不好(移动提供的线路),那可以在服务器端添加一个socket维护,如果长时间不能接收或者发送数据,那么服务器端应该主动断掉某一个socket,然后重新建立新的socket连接。
[/Quote]
哥哥,已经说了服务器端会通过终端侧的心跳来判断。但现在问题在于服务器侧判断终端侧掉线的过程当中需要给这个貌似已经掉线的终端发送信息(肯定是发送不到终端上的),怎么才能最好的在服务器上知道这个信息已经发送到终端上或者失败的错误信息。
亚细亚 2010-01-26
  • 打赏
  • 举报
回复
lz的问题一个是信号不好。
第二可能是不是专线专用,所以就出现了这个问题。
如果是信号不好,那实在是没有好的解决办法。
如果是线路不好(移动提供的线路),那可以在服务器端添加一个socket维护,如果长时间不能接收或者发送数据,那么服务器端应该主动断掉某一个socket,然后重新建立新的socket连接。
所得寺内 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yaxiya 的回复:]
我现在碰到和你相似的问题,但不是同一个问题?一直考虑如何解决。
[/Quote]
你碰到什么问题,可以说出来大家一起讨论。
所得寺内 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 kyzf 的回复:]
这个办法很多。

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

2、既然采用TCP通讯,你可以实现IP的PING,比如超过多少时间,PING下
[/Quote]
我想的是不用再另外开销(比如再另外增加一个信息列表,定期检测这个列表中的信息是否有回复或者是否超时,然后通知其他线程干活什么的),底层通讯中是否能够捕获到对方的错误信息(比如上层通讯的#10054、#10056等等这样的错误信息)。

看来到现在为止是没有办法了,只有增加一个信息列表来检测是否超时或正常发送。要捕获错误信息只有等移动侧将通讯信道T掉才会出来。
亚细亚 2010-01-24
  • 打赏
  • 举报
回复
我现在碰到和你相似的问题,但不是同一个问题?一直考虑如何解决。
亚细亚 2010-01-24
  • 打赏
  • 举报
回复
lz问题如何?
kyzf 2010-01-23
  • 打赏
  • 举报
回复
这个办法很多。

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

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

3,849

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 无线
社区管理员
  • 无线
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧