Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Ошибка сервера IOException
#1
Ошибка появилась после добавления пакета PROTOCOL_BASE_GET_USER_INFO_ACK
[Изображение: NnllzNZrwl0.jpg]
Ответ
#2
Клиент у тебя отвалился, а ты продолжаешь его читать. Нужно воспользоваться try {} catch блоком:

[SRC="csharp"]try
{
// code here
}
catch (IOException)
{
Disconnected();
}
catch (Exception ex)
{
Disconnected();

log.Error(ex);
}
[/SRC]
Ответ
#3
PROGRAMMATOR Написал:Клиент у тебя отвалился, а ты продолжаешь его читать. Нужно воспользоваться try {} catch блоком:

[SRC="csharp"]try
{
// code here
}
catch (IOException)
{
Disconnected();
}
catch (Exception ex)
{
Disconnected();

log.Error(ex);
}
[/SRC]

[Изображение: vFlqGsMCKYI.jpg]
Ответ
#4
Boris2105 Написал:[Изображение: vFlqGsMCKYI.jpg]

Стери этот ужас, в дисконектит
И будет все нормально
Ответ
#5
Awiion Написал:Стери этот ужас, в дисконектит
И будет все нормально

то есть реализовывать не надо?
теперь клиент просто закрывается
Ответ
#6
Boris2105 Написал:то есть реализовывать не надо?
теперь клиент просто закрывается

Клиент игры? Или сервера?
Ответ
#7
Awiion Написал:Клиент игры? Или сервера?

клиент игры
Ответ
#8
Boris2105 Написал:клиент игры

Тебе единственное что надо была сделать поставить тру\катч в BeginRead,
От туда взять условие когда разрывается соединения, вызывать дисконектит с клиентМенеджера
Ответ
#9
Awiion Написал:Тебе единственное что надо была сделать поставить тру\катч в BeginRead

Код:
public void BeginRead(IAsyncResult asyncResult)
                {
                    try
                    {
                        int received = Stream.EndRead(asyncResult);
                        Log.Info("Received = {0}", received);
                        while (received >= 6)
                        {
                            int length = BitConverter.ToUInt16(buffer, 0) & 0x7FFF;

                            byte[] temp = new byte[length + 2];
                            Array.Copy(buffer, 2, temp, 0, temp.Length);
                            int bits = Id % 7 + 1;
                            BitShift.Unshift(temp, bits);
                            byte[] opcode = new byte[] { temp[0], temp[1] };
                            RecvOpcode packet = (RecvOpcode)BitConverter.ToUInt16(opcode, 0);
                            Type t = Type.GetType("PiercingBlow.Login.Network.Recv." + packet.ToString());
                            Log.Info("PacketId = {0} Lenght = {1}", BitConverter.ToUInt16(opcode, 0), temp.Length);
                            if (t != null)
                            {
                                ClientPacket clientpacket = (ClientPacket)Activator.CreateInstance(t);
                                clientpacket.Client = this;
                                clientpacket.Process(buffer);
                            }
                            else
                            {
                                Log.Trace(temp.ToHex());
                            }
                            received -= length + 4;
                            Array.Copy(buffer, length + 4, buffer, 0, received);
                        }
                        Stream.BeginRead(buffer, 0, buffer.Length, BeginRead, null);
                    }
                    catch (IOException)
                    {
                        Disconnected();
                    }
                    catch (Exception ex)
                    {
                        Disconnected();
                        Log.Error("error",ex);
                    }
                    }
Ответ
#10
Boris2105;412223 Написал:то есть реализовывать не надо?

Нужно, ведь объект игрока нужно удалить (если это требуется - выйти с боя\комнаты\канала). Тебе нужно разобраться почему клиент падает, попробуй изучить BC.log, возможно там он сказал причину.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Сервера Point Blank / Piercing Blow Awiion 5 10,803 06-28-2018, 07:45 PM
Последний пост: AngryKitten
  Ошибка при запуске клиента Boris2105 19 4,306 05-20-2017, 12:22 PM
Последний пост: Boris2105
  [HELP] Error Login (IOException) yGGhz 2 1,391 12-21-2016, 02:23 PM
Последний пост: Awiion
  Дампы сервера foxovsky 8 2,374 11-20-2016, 01:30 PM
Последний пост: Alter53
  Point Blank MyInfo ошибка Yusqa 2 1,927 05-01-2016, 11:28 AM
Последний пост: crayonnet
  Ошибка при входе на канал Boris2105 6 1,723 02-05-2016, 05:20 PM
Последний пост: Boris2105
  Ошибка bugtrap Boris2105 2 2,286 01-27-2016, 09:33 PM
Последний пост: Boris2105

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)