c# vs2012 序列化(Serialize)和反序列化(Deserialize)实际应用

c# vs2012 序列化(Serialize)和反序列化(Deserialize)实际应用

c#中序列化和反序列化又称之为串行化,能够使运行的中的数据结构及数据能够长时间保存起来,用以后面的使用。本文也就实际项目来说明。

一.TCP通信

从初步建立TCP连接,到发送验证数据包数据,这边就需要向服务器发送数据。发送的数据是验证信息,就简单来说,如果是一个字符串,这里面我们用TCP可以直接写入流就行了:

 //客户端
 string content = "发送的数据";
 Byte[] bytSend = Encoding.UTF8.GetBytes(content);  
 ntwStream.Write(bytSend, 0, bytSend.Length);

而相对应的服务器接收数据应该是这样:

//服务器
listener.Listen(0);  
Socket socket = listener.Accept();  
NetworkStream ntwStream = new NetworkStream(socket);  
StreamReader strmReader = new StreamReader(ntwStream); 
strmReader.ReadToEnd()

这种传输数据结构相对很简单的TCP可以直接传输即可,但是对于相对复杂的结构的数据,类的实例,需要的数据有int,string,还有文件列表List<>等等,那么简单数据传输就不适用了(也可以简单传输,但是解析相对困难),这时候就需要序列化(后面有复杂结构示例),下面就以验证数据包来说明,数据包包括登录名和密码

//在要序列化的类上面加上[Serializable]声明这个类是可以序列化的
[Serializable]
public class LoginInfo
{
  
  //登入数据包.
    public String strUID = null;//用户名
    public String strPWD = null;//密码.
    public Int32 iState = 0;//状态值.
 }

客户端发送验证数据包

//客户端
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter mBinaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
try
{
  //连接服务器
  ClientTcp.Connect(System.Net.IPAddress.Parse(strIPAddr),iPort);
  //发送验证数据包
  LoginInfo mLoginInfo = new LoginInfo();
  mLogin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值