NetworkStream有关问题

NetworkStream问题
怎么才能NetworkStream.write()一次,另一边就NetworkStream.read()一次
我这边循环发送的时候,对面总是一次接收完我发的所有东西,加断点的时候程序是write一次read一次,不加断点就成了write多次才read一次
------解决方案--------------------
对面也有缓冲区的


------解决方案--------------------
做个应答,你让他发,他在发,等待你的通知
------解决方案--------------------
比如说msdn的信令格式,每一个消息最后以”换行回车“为结束。于是在”read“的那一端就应该判断每一次收到的消息是否是换行回车结束的。如果不是,则存起来留待以后处理;如果是,则将所有保存的内容连带最后读到的内容,解析出一个或者多个消息(根据中间是否有换行回车进行split划分),然后逐一处理消息。

最简单的信令格式,人家规定了”换行回车“的具体规范含义。
------解决方案--------------------
引用:
Quote: 引用:

同步也是一样的思路,一个线程做监听,收到数据了就处理
而不是在那里循环sleep
网上代码非常多,下载几个研究研究,不能闭门造车啊

接收端就是收到就处理,现在是一次收多了,因为我发送的有自己加的标识的东西,导致后续数据不好处理了
我现在sleep的是发送端,但是sleep影响效率,考虑做应答式的处理,但是我看10L说的也很有道理,难道只能设计信令格式吗?
- -下了几份网上的代码,但是好多编译不过,编译过的两份还测试不了,而且基本都是发文件的,我自己的代码发文件什么的也没问题,就是发文件夹的时候会出错

是数据来了就接收,不是仅仅收到就处理.
你需要给数据来了注册一个事件,数据到达了就执行.而不是用一个线程循环等待.
好好看看各种博客论坛,源码其实就几句话,4个函数搞定的.
不要只着眼于现成的工程,那些封装到工程里的,基本代码异常复杂,
简单的几行代码没必要还做成工程让你下载
------解决方案--------------------
引用:
怎么才能NetworkStream.write()一次,另一边就NetworkStream.read()一次
我这边循环发送的时候,对面总是一次接收完我发的所有东西,加断点的时候程序是write一次read一次,不加断点就成了write多次才read一次


这是不可能的。
具体解决办法可以搜一下“粘包”