本帖最后由 redstill 于 2011-04-22 12:11:16 编辑

解决方案 »

  1.   

    楼上的兄弟 不管收包收到多大的 我每次只从流里面读取1024个字节 所以这里并没有错现在还有一个问题 如果有人能解决 同样给分
    networkstream.write(byte[]) 这个方法 在写入小数据量的时候没有发生问题,但是一旦数据量过大,写入的时候没有问题,但是读取的时候 发现 完整的信息被切成了两段,而且是不连续的.这是因为什么呢~
    要怎样避免这样的事情发生呢
      

  2.   

    原因:WSABUF数据结构没有初始化!使用new来分配的,没有调用缺省的构造函数来初始化,所以导致这一问题。
      

  3.   

    http://blog.csdn.net/qiuqingpo/archive/2010/04/02/5445808.aspx
      

  4.   

    楼上的朋友 能不能具体给断代码呢 现在我的问题还有个 就是向流里写入数据的时候 在对方读取的时候 会发现流被切成了两断 而且是不连续的 请问流的大小有上限么 是不是达到这个上限之后 stream在write的时候 就会分两次写入呢 能不能设置这个大小
      

  5.   

    兄弟,我解决了这个问题,不知道你的问题是否和我一致。
    我的问题是BeginRead调用太频繁了,即使没有数据到也去调用,导致系统资源耗光了。
    if (stream.CanRead && _client.Available > 0)
    {
        stream.BeginRead(_myReadBuffer, 0, _myReadBuffer.Length, ReadCallBack, stream);
    }
    解决办法:在调用BeginRead先判断缓冲区是否有数据到了就可以了。
    _client.Available > 0