Socket 之 传值方式

一、传送 DataTable 和 DataSet

  1、发送端需序列化数据为二进制序列化格式

        public static byte[] GetBinaryFormatDataSet(DataSet ds)
        {
            byte[] binaryResult = null;
            //创建内存流
            using (MemoryStream memStream = new MemoryStream())
            {
                //产生二进制序列化格式
                IFormatter formatter = new BinaryFormatter();
                //指定DataSet串行化格式是二进制
                ds.RemotingFormat = SerializationFormat.Binary;
                //串行化到内存中
                formatter.Serialize(memStream, ds);
                //将DataSet转化成byte[]
                binaryResult = memStream.ToArray();

                //清空和释放内存流
                memStream.Close();
                memStream.Dispose();
            }
            return binaryResult;
        }

  2、接收端需反序列化

        public static DataSet RetrieveDataSet(byte[] binaryData)
        {
            DataSet ds = null;
            //创建内存流
            using (MemoryStream memStream = new MemoryStream(binaryData))
            {
                memStream.Seek(0, SeekOrigin.Begin);
                //产生二进制序列化格式
                IFormatter formatter = new BinaryFormatter();
                //反串行化到内存中
                object obj = formatter.Deserialize(memStream);
                //类型检验
                if (obj is DataSet)
                {
                    ds = (DataSet)obj;
                }
            }
            return ds;
        }    

二、字符串

  1、发送端

string msg = "Message from server at " + DateTime.Now.ToString();
byte[] buffer = Encoding.Unicode.GetBytes(msg);

  2、接收端

byte[] buffer = new byte[1024];
string message = Encoding.Unicode.GetString(buffer, 0, length);

 

posted on 2016-09-08 09:27  Now,DayBreak  阅读(753)  评论(0编辑  收藏  举报