序列化与反序列化的有关问题

序列化与反序列化的问题
服务器端:
                  byte[] _gboModality = new byte[_maxPacket * 100];
                                clientSkt.Receive(_gboModality);
                                DataTable dtModality = iniModality(GetFisrtWord(_gboModality));
                                MemoryStream memory = new MemoryStream();
                                memory.Close();
                                clientSkt.Send(buff); // Socket实例化对象

客户端:
            byte[] onlineBuff = new byte[_maxPacket * 100];
                     int byteCnt = _nws.Read(onlineBuff, 0, onlineBuff.Length);
                     MemoryStream memory = new MemoryStream(onlineBuff);//使用内存流来存这些byte[] 
                   BinaryFormatter b = new BinaryFormatter();

                    DataTable dtModality = (DataTable)b.Deserialize(memory); 
            memory.Close();
调试的时候b.Deserialize(memory)报错了,如下:
System.Runtime.Serialization.SerializationException 类型异常。请大侠们指教!
------解决方案--------------------
buff = memory.ToArray();
------解决方案--------------------
强制转换就行了啊
datatable dt=o as datatable