1插座断电有3处会有窗口提醒(任务管理器断开客户端 模拟插座断电)

第一处:IOException

        /// <summary>/// 客户端通讯回调函数/// </summary>/// <param name="ar"></param>private void TCPCallBack(IAsyncResult ar){LeafTCPClient client = (LeafTCPClient)ar.AsyncState;try{if (client.NetWork.Connected){NetworkStream ns = client.NetWork.GetStream();byte[] recdata = new byte[ns.EndRead(ar)];//这里很好 recdata数组长度就是获得数据的长度  收到六个字节的数据,则recdata.Length=6   远程异常关闭时,执行完这句话后发生IOException异常if (recdata.Length > 0){Array.Copy(client.buffer, recdata, recdata.Length);if (DataReceived != null){DataReceived.BeginInvoke(client.Name, recdata, null, null);//异步输出数据到UI界面
                        }DataProcess(client, recdata);//对收到的数据进行处理ns.BeginRead(client.buffer, 0, client.buffer.Length, new AsyncCallback(TCPCallBack), client); //继续接收该客户端发来的数据
                    }else{client.DisConnect();lstClient.Remove(client);BindLstClient();}}}catch (IOException ex){//远程连接已经断开    无法从传输连接中读取数据KillMessageBox killbox = new KillMessageBox();killbox.StartKiller();MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);    //ex = {"无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。。"}}  }

第3处:

        // yy 定时器中断函数void TimerHander(object source, ElapsedEventArgs e){try{bool AllTestDeviceBreakWarm = false;if (TestlstClient.Count > 0){bool IsSendOK = true;List<LeafTCPClient> WaitRemove = new List<LeafTCPClient>();foreach (LeafTCPClient sclient in TestlstClient){if (sclient.relayon == false){IsSendOK = NewSendData(sclient, openstring);//继电器开
                                }else{IsSendOK = NewSendData(sclient, offstring);//继电器关
                                }if (IsSendOK == false)//命令发送失败,可能远程连接断开
                            {WaitRemove.Add(sclient);}else{ sclient.relayon=!sclient.relayon;}}foreach (LeafTCPClient tclient in WaitRemove)//删除旧的client
                        {tclient.DisConnect();lstClient.Remove(tclient);TestlstClient.Remove(tclient);BindLstClient();//检查下TestlstClient列表都被移除了,count=0if (TestlstClient.Count == 0)AllTestDeviceBreakWarm = true;KillMessageBox killbox = new KillMessageBox();killbox.StartKiller();MessageBox.Show(String.Format("设备{0},{1}断开网络,请检查!", tclient.userid, tclient.deviceid),"错误");}}else{if (AllTestDeviceBreakWarm == true){KillMessageBox killbox = new KillMessageBox();killbox.StartKiller();MessageBox.Show("没有测试的设备与服务器建立连接,请重连","错误");//只提示一次AllTestDeviceBreakWarm = false;}}}catch(Exception ex){MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);     //第3处异常提醒位置  ex = {"集合已修改;可能无法执行枚举操作。"}}}

第二处:

        public bool NewSendData(LeafTCPClient client, byte[] data){try{//if(client.NetWork.Connected)client.NetWork.GetStream().Write(data, 0, data.Length);//向客户端发送数据return true;}catch (InvalidOperationException ex)//发送数据失败,远程连接异常断开 (如插座断电情况)
            {lstClient.Remove(client);TestlstClient.Remove(client);KillMessageBox killbox = new KillMessageBox();//5分钟后关闭提示窗口
                killbox.StartKiller();MessageBox.Show("设备" + client.userid + "," + client.deviceid + ":" + ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);    //这里第二处窗口提示  ex = {"不允许对非连接的套接字执行此操作。"}return false;}catch (Exception ex){KillMessageBox killbox = new KillMessageBox();//5分钟后关闭提示窗口
                killbox.StartKiller();MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);return false;}  }

转载于:https://www.cnblogs.com/fyp7077/p/7511509.html

插座断电提醒(测试阶段)相关推荐

  1. android智能家居wifi原理图,WiFi模块为你讲解WiFi插座原理

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区. 您需要 登录 才可以下载或查看,没有帐号?注册 x 物联网给我们的家居变得越来越方便.简单,WiFi智能插座作为智能家居的小小分支,让充电和控 ...

  2. 华硕主板设置完成通电开机,接上Wi-Fi智能插座,通电开机无效的原因???

    以下是设置通电开机的步骤: 开机后按DEL键或者F2,进入华硕BIOS的设置界面,左上角将BIOS的语言改为"中文(简体)": 进入主界面,选择Advanced Mode进入高级模 ...

  3. 旧手机物联网_废旧的 Android 手机能拿来干什么有趣的事?

    做个哄女儿吃饭的投币机. 目前的功能有:投币看一分钟电视.投币打开零食柜.后面还有更多功能加入.效果参考以下视频.制作方法很简单,不需要会编程,只需要做一点点手工和设置.DIY投币机让女儿自己吃饭ht ...

  4. ccxprocess用不用自启_远程开机加远程控制,游戏玩家用这款智能插座超实用

    我很早就开始接触智能插座了,记得我手里第一款支持APP控制的插座是网上众筹,不过没多久这家公司倒闭了,插座的远程功能也停止维护了:后来家里折腾智能家居,就开始用米家的智能插座,感觉确实很方便.去年魔兽 ...

  5. 共享汽车充电桩方案开发详解

    物联网共享时代来临,共享汽车.新能源汽车正在火热兴‌‌起,一个拥有私家桩的车主每日对于充电桩的需求仅几个小时,一周的充电次数在两到三次,那么其余时间充电桩处于空置状态.共享汽车充电桩模式就是把闲置的资 ...

  6. 汽车充电系统开发解决方案

    物联网共享时代来临,共享汽车.新能源汽车正在火热兴‌‌起,一个拥有私家桩的车主每日对于充电桩的需求仅几个小时,一周的充电次数在两到三次,那么其余时间充电桩处于空置状态.汽车充电系统模式就是把闲置的资源 ...

  7. 公司里开发用的机器,虚拟机、网络、转发、ssh连接、远程桌面、远程开机……等一系列骚操作的操作概述

    我这里讲的都是如何回家后还可以连接公司电脑,且省电.不伤机器的事啊,审核的各位别误会了. 这篇就不要提docker了,两码事. 也不要纠结什么hyperV.virtualBox还是vmware的了,无 ...

  8. GPS 定位管理车辆系统

    交通运输行业标准JT/T796-2011 1.自检功能: 终端具备自检功能,通过信号灯或显示屏明确表示车载终端当前主要状态,包括卫星定位及通信模块工作状态等.若出现故障,则通过信号灯或显示屏等显示方式 ...

  9. Ubuntu 18.04 升级 20.04

    1.更换源 2.安装所有更新包 3.移除Ubuntu18.04上未用的旧包 4.升级   鸿蒙开发要使用Ubuntu 20.04 及以上编译源码,故将原来学习ROS 的Ubuntu18.04升级为20 ...

  10. 解决Ubuntu20.04 开机黑屏光标闪烁进不去系统

    问题描述: 我是双系统,原Ubuntu系统是18.04的,使用命令行升级到20.04,我搞到晚上2:00,tnnd学校插座断电了,大部分是升级好了,但还有一些任务没有完成,第二天起来直接进不去系统了, ...

最新文章

  1. 苹果系统怎么降低版本_1903、1809...到底怎么看系统版本?
  2. 一个包从服务器到达客户端
  3. 15 个变量和方法命名的最佳实践
  4. python项目策划书_跟着销售学python系列(1)--实践项目骨架(1)
  5. DCMTK:创建,写入和读取二进制细分对象
  6. [导入]基于Web的B/S结构实时监控系统[转]
  7. Scale Match:国科大提出小目标检测的尺度匹配方法,用于预训练数据集处理
  8. 167. Two Sum II - Input array is sorted (C, C++, Python)
  9. 05-Prohibited package name: java异常原因
  10. 5绘制收银台程序_进来学知识了:实操之C/C++的绘制
  11. dnp服务器未响应,PTP时间戳精度
  12. html5小游戏需求分析,2015年HTML5就业需求走势总结分析
  13. 电脑报制作黑客入门新手特训第1版
  14. Protel99SE 50个常见问题解决方法与技巧
  15. 计算机汇编语言调试报告心得,汇编语言实习心得
  16. 中国传统文化的现代意义
  17. 【TensorFlow】【数字货币】【单词记忆】【微信运营】【DIY电脑】 | Chat · 预告
  18. Python爬取满7天赎回零费率基金:短线基金定投
  19. 阿里云Docker仓库
  20. zabbix Lack of free swap space

热门文章

  1. 清除Marco1!$A$1提示软件日志.
  2. 第一周总结 汉得日记
  3. delete与垃圾回收机制
  4. Python带你把喜欢的视频保存~采集无水印视频
  5. Python数据挖掘与可视化探索——以美国人口年收入数据集(income dataset/adult.data)为例
  6. r语言nonzerocoef函数_文献汇报||Lasso方法在肿瘤基因位点筛选中的应用
  7. 国土导弹光学反狙击探测系统行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  8. 昨天去某大厂面试,居然让我做四则运算,还好我够机灵。
  9. No matter how well thought out it is
  10. 苏州科技大学的计算机专业怎么样,苏州科技大学怎么样?有什么王牌专业?排名如何?...