网络传输之序列化
来源:互联网 发布:山寨币程序员开发 编辑:程序博客网 时间:2024/06/06 18:07
由于最近学习到序列化和反序列化的知识,便将以前写的网络传输代码加以修改,以下是传输一个数组的序列化
服务器端:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Runtime.Serialization.Formatters.Binary;
namespace 网络传输序列化服务器端
{
class Program
{
static void Main(string[] args)
{
TcpListener Listener = new TcpListener(IPAddress.Any, 8888);
Listener.Start();
while (true)
{
TcpClient client = Listener.AcceptTcpClient();
NetworkStream netstream = client.GetStream();
int[] S = new int[54];
for (int i = 0; i < 54; i++)
{
S[i] = i;
}
BinaryFormatter Formatter = new BinaryFormatter();
//MemoryStream stream1 = new MemoryStream();
//byte[] bytes=stream1.toArray();
// Formatter.Serialize(netstream1, S);
Formatter.Serialize(netstream, S);
byte[] bytes = new byte[540];
netstream.Write(bytes, bytes.Length, 0);
netstream.Flush();
netstream.Close();
}
}
}
}
客户端:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
namespace 网络传输序列化客户端
{
class Program
{
static void Main(string[] args)
{
TcpClient client = new TcpClient("127.0.0.1", 8888);
NetworkStream stream = client.GetStream();
BinaryFormatter Formatter = new BinaryFormatter();
int[] R = (int[])Formatter.Deserialize(stream);
for (int i = 0; i < 54; i++)
{
Console.WriteLine(R[i]);
}
stream.Close();
}
}
}
其中比较容易出现问题的就是在反序列化的时候出现“在分析完成之前就遇到流结尾”的问题,原先在服务器端使用了MemoryStream流会出现该问题,后来将服务器端和客户端全改成networkstream流避免了该问题。
- 网络传输之序列化
- 序列化与网络传输
- Java 网络编程 之 传输对象 Serialization 序列化
- 网络传输与序列化-结构体
- 网络传输——结构体还是序列化?
- 网络传输——XML文档的序列化
- 网络传输——XML文档的序列化
- Java Socket网络传输的序列化机制
- Java Socket网络传输的序列化机制
- 网络传输之网络协议
- 序列化对象传输
- 网络传输过程中的字节序列问题
- Crisis-rpc之三传输对象与序列化
- cocos2dx网络传输之CURL
- 网络编程之UDP传输
- 网络传输的本质(buffer传输)决定了序列化和反序列化的重要应用
- 传输网络IP化
- android 二进制传输 序列化
- 编程,乐趣何在?
- Java正则表达式入门
- prototype.js doc
- D2010
- Solaris/Linux 命令行 简单手册
- 网络传输之序列化
- Linux驱动程序开发(4) - 字符设备驱动(3)-LED设备驱动和应用程序
- 2009-09-01
- 纪元(Epoch)以来的秒数
- 软件测试面试题整理2
- java数据库设计中的14个技巧
- java实现的18位身份证格式验证算法
- 学习
- [转]如何快速定位一个函数的返回点 - 调试技巧