您的位置:首页 > 理论基础 > 计算机网络

网络编程问题小结

2016-06-02 21:34 190 查看
在C#网络编程中,遇到几处小错误,希望能对各位有帮助!

问题1:在使用序列化生成内存流,然后从内存流中取出byte型数组之前,需要将内存流中的Position设置为初始值(0)。不然会读取为空字节。这样接受方在进行反序列化时会报出二进制流“0”不包含有效的 BinaryHeader。这可能是由于无效流,或由于在序列化和反序列化之间的对象版本更改。

问题2:在反序列化之前也需要先将内存流的Position设置为从头开始,不然会报出在分析完成之前遇到流结尾。

设置内存流初始值方法:1.memStream.Position = 0;   2.memStream.Seek(0, System.IO.SeekOrigin.Begin);

问题3:在进行网络数据传输时,如果是进行复合对象传输,需要指定这一次发送的总长度。当需要发送的数据很大时,需要分多次发送。因为在TCP协议中传输大数据容易出现粘包现象,造成传输失败。UDP中则为丢包现象。

问题4:在进行序列化和反序列化时,当对象为自定义类时,需要在服务器和客户端中均采用同一个类。需要完全一样。连空间名也一样。不然会报出无法找到程序集异常。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# 网络编程