求助C# 怎么实现监控连接状态?

huangkai277 2013-06-03 03:21:22
我做个了传输数据的服务器,以我的电脑为服务器,用一条网线把我的电脑跟一台加密机连起来,,两边都分配了IP和端口,然后程序里面也要通过IP和端口连接到加密机,然后传输数据,我想要实现下面这些功能:启动程序的时候通过加密机的IP和端口自动连接到加密机,加个连接状态和加个时钟每隔一段时间判断一下连接状态,如果掉线了,再自动连接。

我自己做了一下,启动程序可以自动连接,也可以监控到连接的状态,但是如果我把连接加密机的网线拨了,实际就已经断线了,但是程序里面显示的状态还是已连接,好像连接的状态一直是显示第一次成功连接的状态,就算连接已经断开了,状态也没有更新显示,要怎么实现,他时时判断,如果掉线了,程序里显示的状态也会更改,然后让他重新自动连接呢?


这个是窗体的Load事件


这是时钟事件里面的代码
http://imgsrc.baidu.com/forum/w%3D580%3Bcp%3Dtieba%2C10%2C61%3Bap%3Dc%23%B0%C9%2C90%2C69/sign=d8fbec4d9e3df8dca63d8f99fd2a11fb/203fb80e7bec54e79ee5f8a4b8389b504fc26a7b.jpg

...全文
330 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
tingting1123 2013-06-04
  • 打赏
  • 举报
回复
或者你只是检测网线断没断 程序自己ping下 不就知道了
tingting1123 2013-06-04
  • 打赏
  • 举报
回复
服务器和加密机之间可以发送和接收数据吧? 你在固定的时间间隔发送个自己定义的数据包 然后接收回复过来的数据包 如果超时没有接收到 就判断为掉线了 去重连就可以了
vo__ov 2013-06-04
  • 打赏
  • 举报
回复
楼主~~ 图挂啦
huangkai277 2013-06-04
  • 打赏
  • 举报
回复
求助
fofo2013 2013-06-04
  • 打赏
  • 举报
回复
心跳包 客户机给服务端发送一条数据,服务端收到后回应一个数据, 客户机根据能不能收到回应数据判断连接状态
  • 打赏
  • 举报
回复
引用 6 楼 huangkai277 的回复:
引用 5 楼 guyuekkk11 的回复:
同意3楼做法。原理就是发送—接收,你自己规定心跳包的格式,只要能正确接收到你加密机的心跳回复,就是连接中。
可以提供一下这个代码参考一下吗?
这个网上应该很多,搜tcp通信有关的,Write、Read(建议最好用异步读BeginRead,这样你的主线程不会卡死)。心跳包尽量少就行了,5-6个比特就行,自己随便定义,只要能接收到固定格式的比特数组,就认为是连接着的。
huangkai277 2013-06-03
  • 打赏
  • 举报
回复
引用 5 楼 guyuekkk11 的回复:
同意3楼做法。原理就是发送—接收,你自己规定心跳包的格式,只要能正确接收到你加密机的心跳回复,就是连接中。
可以提供一下这个代码参考一下吗?
  • 打赏
  • 举报
回复
同意3楼做法。原理就是发送—接收,你自己规定心跳包的格式,只要能正确接收到你加密机的心跳回复,就是连接中。
huangkai277 2013-06-03
  • 打赏
  • 举报
回复
引用 3 楼 owennol 的回复:
简单的做法,隔几秒发送心跳包,如果发送失败,则断线;
这个心跳包,要怎么做呢?
owennol 2013-06-03
  • 打赏
  • 举报
回复
简单的做法,隔几秒发送心跳包,如果发送失败,则断线;
huangkai277 2013-06-03
  • 打赏
  • 举报
回复
求大神帮帮忙
huangkai277 2013-06-03
  • 打赏
  • 举报
回复
加密机动态库.clsJmj nn_clsJmj = new 加密机动态库.clsJmj(); //连接加密机 函数 nn_clsJmj.ConnectOpen("192.168.1.138", 6000); //加密机连接状态函数 nn_clsJmj.GetConnectState();

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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