NetworkStream.write只能使用一次,后面再使用无效

 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;

        }
时间: 2024-10-01 05:03:40

NetworkStream.write只能使用一次,后面再使用无效的相关文章

实现:C#窗体中的文本框只能输入中文汉字,其他输入无效。问:正则表达式怎么用?

原文:实现:C#窗体中的文本框只能输入中文汉字,其他输入无效.问:正则表达式怎么用? private void textBox1_KeyPress(object sender, KeyPressEventArgs e) ? ? ? ? { ? ? ? ? ? ? Regex rg = new Regex("^[\u4e00-\u9fa5]$"); ? ? ? ? ? ? if (!rg.IsMatch(e.KeyChar.ToString()) && e.KeyChar

真正的并行执行多任务只能在多核CPU上实现

一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了一个Word进程. 有些进程还不止同时干一件事,比如Word,它可以同时进行打字.拼写检查.打印等事情.在一个进程内部,要同时干多件事,就需要同时运行多个"子任务",我们把进程内的这些"子任务"称为线程(Thread) 总结一下就是,多任务的实现有3种方式: · 多进程模式: · 多线程

web站点,同一个浏览器只能登陆一个用户的原因(cookie不能跨浏览器)

我的web站点,比如  http://ip/testsite/default.aspx, 当我在我的机器上,用chrome打开,用账号user1登陆,那么当我再新开个tab,再打开这个web站点,这时显示的还是user1登陆着.我想在chrome里面用另一个账号user2登陆,那么只能是退出user1,再用user2登陆.也就是在同一个浏览器里,同一时间只能一个账号登陆. 而同一时间,在不同的浏览器里,比如一个是chrome, 一个是firefox,分别用user1和user2登陆,这样是可行的

再谈登陆窗体的测试用例设计要点

再谈登陆窗体的测试用例设计要点 前面我已写过一篇关于登陆窗体的测试用例的文章,自我感觉总有一些不足之处.这篇文章主要是对上篇文章的补充吧 上篇博客的地址:http://blog.csdn.net/haiyan_cf/article/details/41308949 一.登陆界面图展示: 一.从测试用例设计方法的角度考虑: (1)等价类分析法:分为有效等价类和无效等价类. 有效等价类,输入正确的用户名和密码,验证是否能登陆成功. 无效等价类,输入错误的用户名或密码,登陆时是不是能给出合理的提示信息

同步传输字符串

同步传输字符串 接下来考虑着一种情况,完成一个简单的文本通信: (1).客户端将字符串发送到服务端,服务端接受字符串并显示 (2).服务端将字符串由英文的小写转换为大写,然后发回给客户端,客户端接受并显示. 客户端发送,服务端接受并输出 1.服务端程序 可以在TcpClient上调用GetStream()方法来获得连接到远程计算机的网络流NetworkStream.当在客户端调用时,它获得连接服务端的流;当在服务端调用时,它获得连接客户端的流. 先看服务端的代码实现: using System;

产品规划:如何规划代金券系统?

ps:此代金券系统的规划是建立在SDK的产品上 一.代金券需求 近期,公司的游戏产品需要做折扣系统,目的提高付费率.简单来说就是玩家购买游戏商品获得一定的折扣. 二.关于折扣形式 这里折扣形式可以有: 直接在产品进行打折: 发放活动券: 提供充值返利: 代币等. 1.直接在产品进行折扣处理 这种方法最为简单,无论是技术实现还是产品角度都是最方便的,但是用户体验感也是最不好的.用户很直观看到有打折,打折仅仅打折并没有拿到实际的东西,用户得不到真实的感知质量,这就是用户感知性: 2.发放活动券形式

iOS证书说明和发布

1.首先通过钥匙串访问——证书助理——从证书颁发机构请求证书——填写证书信息(邮箱,常用名称,存储到磁盘)——存储为(自定义名称.certSigningReuqest,简称CSR文件,只是为了提交到苹果开发者账号中,然后就没用了)到本地 2.苹果开发者账号中,创建证书(Development和Production)——上传CSR文件——下载证书运行 ( xxx.cer文件) 注意:只有在当前电脑中生成本地生成证书,上传到苹果开发账号,然后下载cer文件运行后,钥匙串中才有证书以及对应的秘钥 如果

python实现网页登录时的rsa加密流程

对某些网站的登录包进行抓包时发现,客户端对用户名进行了加密,然后传给服务器进行校验. 使用chrome调试功能断点调试,发现网站用javascript对用户名做了rsa加密. 为了实现网站的自动登录,需要模拟这个加密过程. 网上搜了下关于rsa加密的最简明的解释: rsa加密是非对称加密算法,该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥.公钥是可发布的供任何人使用,私钥则为自己

java面试题大全

java面试笔试题大汇总     第一,谈谈final, finally, finalize的区别. 最常被问到. 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统). 第四,&和&&的区别. 这个问得很少. 第五,HashMap和Hashtable的区