Я использую Tcp-Ip для отправки объектов.Мое соединение работает правильно для некоторых объектов и не будет работать для других объектов.Метод приема TcpClient не получает байтовый массив в правильном формате для некоторых объектов.
// Запрос TcpClient для сети передачи данных.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, даже после того, как эти данные перетасованы.