TcpClient Recive方法未获取正确格式的字节数组

时间:2019-06-14 10:31:58

标签: c# tcp tcpclient tcplistener

我正在使用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进行处理。

0 个答案:

没有答案