Показать сообщение отдельно
Старый 21.06.2010, 04:27   #21
Новичок
 
Аватар для ecl
 
Регистрация: 15.06.2010
Адрес: Москва
Сообщений: 11
Сказал Спасибо: 9
Имеет 1 спасибку в 1 сообщении
ecl пока неопределено
По умолчанию

А я вот так
Код:
void checkDataFromClientTimerCallback(object sender, EventArgs e)
        {
            if (SocketToClient.Available > 2)
            {
                bool PacketRecived = false;
                MainWindow.textBoxLog.AppendText("Получен пакет от Клиента\n");
                //Считываем первые 2 байта пакета и преобразоваваем их в размер пакета
                byte[] CurrentPacketSize = new byte[2];
                SocketToClient.Receive(CurrentPacketSize,2,SocketFlags.None);
                uint CurrentPacketSizeInInt = Packet.ReadH(CurrentPacketSize, 0);
                //Если Полученых данных достаточно для считывания читаем
                while (!PacketRecived)
                {
                    if (SocketToClient.Available >= CurrentPacketSizeInInt - 2)
                    {
                        //Считываем Содержимое пакета
                        byte[] BytesRecivedFromClient = new byte[CurrentPacketSizeInInt - 2];
                        SocketToClient.Receive(BytesRecivedFromClient);
                        PacketRecived = true;
                        //Создаем пакет на основе полученных данных
                        Packets.Add(new Packet(BytesRecivedFromClient, CurrentPacketSizeInInt, false, this));
                        //Шлем пакет Клиенту
                        byte[] PacketToSend = new byte[BytesRecivedFromClient.Length + 2];
                        PacketToSend[0] = CurrentPacketSize[0];
                        PacketToSend[1] = CurrentPacketSize[1];
                        for (int index = 2; index < PacketToSend.Length; index++)
                        {
                            PacketToSend[index] = BytesRecivedFromClient[index - 2];
                        }
                        SocketToServer.Send(PacketToSend);
                    }
                    Thread.Sleep(100);
                }
                //MainWindow.dataGridPackets.Items.Refresh();
            }
        }
Дешифровка пакетов в обоих направлениях наконецто работает нормально.
Парсинг тоже теперь заработал.
Завтра буду вводить еще 2 ключа GKey для подпихивания своих пакетов.

Последний раз редактировалось ecl, 21.06.2010 в 04:30.
ecl вне форума   Ответить с цитированием