C#NetworkStream Read Write问题

来源:互联网 发布:仁以为己任 不亦重乎 编辑:程序博客网 时间:2024/05/17 01:31

最近做一个网络传输相关的项目,其中涉及到NetworkStream,但是遇到了一些问题,写下来以供后来人参考,免走弯路。

1、NetworkStream Write

      

NetworkStream netStream;byte[] data = new byte[dataLength];netStream.Write(data, 0, dataLength);

其中,data是要发送的数据,dataLength是该数据的长度,如果发送数据过长,那么接收端在用Read方法进行读取的时候,会出现数据读取不完整的问题。


2、NetworkStream Read

NetworkStream netStream;byte[] data = new byte[dataLength];netStream.Read(data, 0, dataLength);

采用上面的方法读取发送的发送的较大数据时,data里面的数据往往只是一部分数据,不能完整接收,应该采用以下方法读取数据:

        internal byte[] ReceiveByteArray(NetworkStream stream)        {            try            {                int bufferlen = GetSize(stream);                byte[] resultbyte = new byte[bufferlen];                int offset = 0, bytesread = 0;                while (offset < bufferlen)                {                    bytesread = stream.Read(resultbyte, offset, bufferlen - offset);                    if (bytesread == 0)                        throw new Exception("网络异常断开,数据读取不完整。");                    else                        offset += bytesread;                }                return resultbyte;            }            catch (Exception)            {                throw;            }        }

以上只是一个参考,有什么不对的地方,请各位指出。

原创粉丝点击