我正在使用Tcp-Ip发送对象。我的连接适用于某些对象,不适用于其他对象。 TcpClient的Receive方法不能以正确的格式接收某些对象的字节数组。
// TcpClient请求数据 Network.Send(BitConverter.GetBytes(13));
byte[] Reply = Network.ReciveBytes();
int Size = BitConverter.ToInt32(Reply, 0);
int SizeCountIncrement = 4;
LinkedList<CatogoryTemp> Data = new LinkedList<CatogoryTemp>();
CatogoryTemp Temp = null;
for (int i = 0; i < Size; i++)
{
Temp = new CatogoryTemp();
int LocalAction = BitConverter.ToInt32(Reply, SizeCountIncrement);
SizeCountIncrement += Temp.ToCatogoryTemp(Reply, SizeCountIncrement);
Data.AddLast(Temp);
}
// TcpListner发送数据
LinkedList<CatogoryTemp> DataToSend = db.LoadCatogories();
List<byte> Sender = new List<byte>();
Sender.AddRange(BitConverter.GetBytes(DataToSend.Count));
foreach (CatogoryTemp i in DataToSend)
{
Sender.AddRange(i.ToByteArray(15));
}
byte[] data = Sender.ToArray();
socket.BeginSend(data, 0, data.Length, SocketFlags.None, new AsyncCallback(SendCallBack), socket);
private void SendCallBack(IAsyncResult r)
{
Socket socket = (Socket)r.AsyncState;
socket.EndSend(r);
}
在调试tcp-listner发送字节数组(Data)时,其初始字节的值为20,因为我的长度为20,而下一个字节的值为15,但是在接收时,我的初始字节为6,而一些随机数据为20字节即使在重新整理数据之后也要对字节61进行处理。