最近写一个上位机遇到套接字读取数据的时候线程停止。
上读取代码:

        public static bool ReadAirCompressor(string address,  out int Data){bool result=false;address = DataRead.ReadAddress; //空压机地址int  cnt = 43;                       //读取数据个数result = ComCompressor(address, 0x01,0x10, cnt);if (result == true){Data = 1;return true;}else{Data = 0;return false;}}public static bool ComCompressor(string ipaddress, int address, int state, int DataCnt ){byte[] Mdata = new byte[8];dataCnt = DataCnt;//先声明读数据长度DateTime sendtime = DateTime.Now;// SendData =Convert.ToString( sendtime)+">>"+ipaddress+address+dataCnt; //发送到显示Mdata[0] = Convert.ToByte(address);     //modbus站号Mdata[1] = 0x03;                        //功能码 写多个寄存器Mdata[2] = 0x00;Mdata[3] = 0x30;//Mdata[2] = Convert.ToByte(state >> 8);  //起始地址高位//Mdata[3] = Convert.ToByte(state & 0xFF);//起始地址地位Mdata[4] = 0x00;                        //寄存器总数高位Mdata[5] = 0x02;                        //寄存器总数低位 2Mdata[6] = 0xC4;                        //CRC校验高Mdata[7] = 0x04;                        //CRC校验低//连接套接字Socket sokClient = null;//负责与服务端通信的套接字sokClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //创建 ip对象IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse("192.168.0.110"),8001);//连接 服务端监听套接字sokClient.Connect(endpoint);sokClient.Send(Mdata);byte[] msgArr = new byte[9 * 1];//接收到的消息的缓冲区int length = 0;//接收服务端发送来的消息数据 threadThread.Sleep(100);SendData = "";if(sokClient.Available>0){length = sokClient.Receive(msgArr);//Receive这里阻断线程}else{sokClient.Close();}int[] d = new int[msgArr.Length];string[] hex=new string[msgArr.Length];for (int i=0;i<msgArr.Length;i++){d[i] = Convert.ToInt32(msgArr[i]);hex[i] = d[i].ToString("X2");}return false;}

如上代码,无缘无故线程停止。
查问题,逐句运行。发现是读取数据的时候出错。
所以增加一个判断,在有消息的时候进行读取。
但是发现一直收不到消息。
检测发现报文发送错误
修改正确的报文后bug解决。

c#Socket遇到Receive阻断线程问题处理相关推荐

  1. C# 中socket根据Receive判断 TcpClient关闭连接的处理

    C# 中socket根据Receive判断 TcpClient关闭连接的处理 程序脚手架 在C#中,开发网络应用,.Net Framework提供了各种便利. - TcpListener用于服务端的监 ...

  2. C# Socket客户端采用双线程断网重连断线重连)

    C# Socket客户端采用双线程断网重连断线重连 2021年07月15日 13:38:18更新 C# Socket服务端 双线程断网重连断线重连 C# Socket客户端采用双线程断网重连断线重连 ...

  3. python实现socket编程(使用线程池)

    使用线程池实现多个客户端和服务端聊天. 首先运行服务端,待服务端运行起来之后,最后运行客户端. 客户端: import os import threadingimport cv2 import soc ...

  4. socket编程和进程线程同步跟新

    博主认为如果这两个分开更新的话,博主不知道要更新多久,所以不如大胆一点,进程线程与socket网络编程一起更新,希望能快一点结束这里的故事从而开启更多新篇章.

  5. Linux下基于C++11的socket网络编程(线程版本)

    第一:关于C++11的线程操作 哈哈,百度这个比较直接,可以很清楚的告诉你. 第二:声明 不再追溯,可以先看看(基础版本)(进程版本)(select函数版本)(epoll版本)再看这个,谢谢. 工具类 ...

  6. python 弹窗不阻断线程_Javascript 如何阻断程序的运行

    通常情况下 JavaScript 是单线程的,一段 Js 程序的运行会占满整个程序进程,我们通常会想方设法的通过异步编程来减少程序的阻塞,那么我们今天反其道而行之,看看通过怎么样正常的方式来阻塞 Js ...

  7. python 弹窗不阻断线程_js或者jquery如何实现类似alert式的函数阻断?

    据我所知,目前还只有 alert 可以阻断.这种情况下,我觉得你应该考虑的是异步(Callback或Promise)方式,而不是阻断方式,比如 你想要的(仅算法) doSomethingBefore( ...

  8. 解决Python Socket UDP端口侦听线程内更新UI界面卡顿、奔溃的问题

    网络读卡器介绍:WIFI无线网络RFID云读卡器远程网络开关物流网NB-IoT4G刷卡阅读器-淘宝网 (taobao.com) Python使用PyQt5做UI界面,开启线程侦听UDP端口,端口接收到 ...

  9. 消息队列NetMQ 原理分析2-IO线程和完成端口

    目录 前言 介绍 目的 IO线程 初始化IO线程 Proactor 启动Procator线程轮询 处理socket IOObject 总结 前言 介绍 [NetMQ](https://github.c ...

最新文章

  1. Spring Cloud应用开发(三:客户端的负载均衡)
  2. hdaoop下HDFS操作
  3. python退出命令-python退出指令
  4. 敏感词库 php,敏感词过滤的php类库
  5. Spring @ControllerAdvice @ExceptionHandler
  6. 我在美团Android研发岗工作的那5年,含泪整理面经
  7. 高等组合学笔记(十一):分拆与Gauss二项式系数,恒等式与展开式
  8. 解决JupyterLab/JupyterNotebook安装pycherts后依旧报错报错 ModuleNotFoundError: No module named ‘pyecharts‘
  9. centOS7忘记密码重置方法
  10. python图书馆预约系统_python实现图书馆研习室自动预约功能
  11. 教你使用faceBook的chisel来提高调试效率
  12. 编译器——指令的汇编
  13. 基于HTML5+CSS制作 H5移动端电商购物网页设计35页面(包括主页,商品详情,转账,付款,购物车等页面) 功能齐全...
  14. 在MAME里如何设置组合键
  15. 计算机网络的三大功能,计算机网络主要功能
  16. Oliver的救援【BFS】
  17. mysql表达式转字符串_[转载]MYSQL 字符串操作[]
  18. 一年级上册计算机教学计划,一年级信息技术上册教学计划一年级信息技术教学计划...
  19. 思科9124光纤交换机配置管理使用手册
  20. JDBC,你真的知道怎么用吗?

热门文章

  1. 软件测试中软件质量的定义,软件测试(Software Testing)和软件质量的定义
  2. 【2021】微众银行校招技术类B卷
  3. 深度学习Tensorflow的坑(二:训练一个epoch卡住不动,程序不终止也不继续)
  4. 女程序员:我负责赚钱养家,老公负责貌美如花
  5. 色差仪在五金行业颜色品质管控的应用
  6. CSI 是什么意思?
  7. 数据库:sql递归查询
  8. 深入了解分布式 Session,这篇就够了!
  9. BUUCTFweb刷题记录
  10. 如何通过海外社交媒体推广APP