博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NetworkStream.write只能使用一次,后面再使用无效
阅读量:5966 次
发布时间:2019-06-19

本文共 2244 字,大约阅读时间需要 7 分钟。

public delegate void ShowMessageMethod2(TcpClient tc);        private void ShowMessage2(TcpClient tc)        {            String IP地址 = ((IPEndPoint)tc.Client.RemoteEndPoint).Address.ToString();            String 端口 = ((IPEndPoint)tc.Client.RemoteEndPoint).Port.ToString();            String 事件 = "无事件";            String 备注 = "无备注";            String 内容 = "无内容";            NetworkStream stm = tc.GetStream();            byte[] readBuf = new byte[maxBufferSize];            int realByteNumber = stm.Read(readBuf, 0, maxBufferSize);            //显示收到的数据            内容 = (StrHexHelp.byteToHexStr(readBuf).Substring(0,realByteNumber * 2));            byte[] writeBuf1;            byte[] writeBuf2;             //总召唤命令            /*             * 长度是18             * 第七位是64             * 第9位6是动作 7是确认 A是结束             */            if ((realByteNumber == 18) && (readBuf[7] == 0X64) &&(readBuf[9] == 0X06))            {                事件 = "总召唤命令";                备注 = "终端收到总召唤命令(终端1)";                this.系统日志TableAdapter.Insert(IP地址, 端口, System.DateTime.Now.ToString(), 事件, 备注, 内容);                                             事件 = "总召唤确认帧及结束帧";                备注 = "终端返回总召唤确认帧(终端2)";                writeBuf1 = new byte[36];                for (int i = 0; i < 18; i++)                    writeBuf1[i] = readBuf[i];                writeBuf1[4] = 0X80;//4控制域                writeBuf1[9] = 0X07;//9传送原因                                                  for (int i = 18; i < 36; i++)                    writeBuf1[i] = readBuf[i-18];                writeBuf1[22] = 0X80;//4控制域                writeBuf1[27] = 0X0A;//A传送原因                内容 = (StrHexHelp.byteToHexStr(writeBuf1));                this.系统日志TableAdapter.Insert(IP地址, 端口, System.DateTime.Now.ToString(), 事件, 备注, 内容);                              writeBuf2 = new byte[6] { 1, 2, 3, 4, 5, 6 };                stm.Write(writeBuf2, 0, 6); //只有这一行起作用                stm.Write(writeBuf1, 0, 36); //这一行无效(并且字节不会被覆盖,就显示短的那一行)                goto GameOver;            }        GameOver:            stm.Close();            tc.Close();            this.系统日志TableAdapter.Fill(this.系统日志DataSet.系统日志);            dataGridView2.ClearSelection();            dataGridView2.Rows[0].Selected = true;        }

 

转载地址:http://vlmax.baihongyu.com/

你可能感兴趣的文章
RabbitMq消息序列化简述
查看>>
git忽略文件【转】
查看>>
Web上的支持的图片格式以及它们之间的区别
查看>>
随意而为
查看>>
jQuery监听文本框值改变触发事件(propertychange)
查看>>
HDU--2040
查看>>
甲骨文Java Archive
查看>>
查看数据库错误日志的位置
查看>>
电信网络拓扑图自动布局
查看>>
C#中List〈string〉和string[]数组之间的相互转换
查看>>
洛谷P1108 低价购买[DP | LIS方案数]
查看>>
通达信里的统计函数及区块背景函数
查看>>
redis主从配置<转>
查看>>
8 行 Node.js 代码实现代理服务器
查看>>
水印,图片验证码
查看>>
C#编程(七十六)----------使用指针实现基于栈的高性能数组
查看>>
PostgreSql 分页limit
查看>>
在MySQL中创建cm-hive使用的数据库及账号
查看>>
linux下限制ip访问
查看>>
linux添加环境变量
查看>>