请教一下vb.net关于socket方面的问题

目前在工厂里面上班,最近研究socket通信,如何保证服务器端与客户端之间的连接一直有效呢?客户端是电脑,服务器端是供应商提供的硬件设备,因此我感觉没办法写心跳检测。就拿扫描枪来说,扫描枪有固定的ip和通信端口号,是服务器端。扫描枪扫描生产出来的产品上的二维码,然后将序列号通过socket传到电脑上,再经过程序识别拆分显示在软件界面上,序列号信息就会自动上传到数据库里。 有时,起先建立的socket通信是正常的,能够正常扫描数据,但是当扫描枪这边出现了网络问题,再次扫描就无法正常进行通信传输数据。 我测试的时候客户端这边的软件不关,哪怕扫描枪出现网络问题重新恢复后,tcp连接还是存在,但是双方没法正常通信。解决方法也很简单,客户端主动关闭之前的socket,重新与扫描枪建立通信就行了。 但是这个过程需要人手动操作,有什么方式能够判断硬件设备服务器端出现了无法正常通信的异常,然后客户端主动断开连接关闭socket,重新再建立连接?
...全文
239 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 2 楼 stherix的回复:
服务端你没法改的话 就定时向服务端发一些要求服务端能返回数据的命令,如果一段时间没有返回,就认为连接失败 这时候关闭连接再重新连接吧 总不能这个扫码枪全是服务器推送,客户端没有命令可以要求返回数据
这个不知道……要问问看……假如扫码枪这边除了人工通过扫码操作外才能够向客户端发送信息,没有办法通过客户端发送命令引起服务端返回数据包的话,就根本没有办法判断连接是否正常了是吧?
  • 打赏
  • 举报
回复
引用 1 楼 胖叔叔写代码的回复:
双方心跳连接,发现无心跳达到多长时间就关闭侦听 这是业务逻辑,你也可以用封装好的东西来直接实现通讯,这些东西内部制定了心跳等操作,不用你再自己写了。 常见框架有 dotnetty thrft gRPC
呃,通讯的服务器端直接是个硬件设备,没办法对其编程啊
stherix 2019-09-12
  • 打赏
  • 举报
回复
服务端你没法改的话 就定时向服务端发一些要求服务端能返回数据的命令,如果一段时间没有返回,就认为连接失败 这时候关闭连接再重新连接吧 总不能这个扫码枪全是服务器推送,客户端没有命令可以要求返回数据
  • 打赏
  • 举报
回复
双方心跳连接,发现无心跳达到多长时间就关闭侦听 这是业务逻辑,你也可以用封装好的东西来直接实现通讯,这些东西内部制定了心跳等操作,不用你再自己写了。 常见框架有 dotnetty thrft gRPC

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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