Ошибка сервера IOException - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Сообщество Календарь
Вернуться   Форум администраторов игровых серверов > MMO > Point Blank (Piercing Blow)

Point Blank (Piercing Blow)
Общие вопросы по написанию эмулятора. General questions on developing emulator. При поддержке: Lucera 2 - разработка Java Interlude

Ответ
Опции темы
Непрочитано 14.05.2016, 22:34   #1
Забанен за кидаловo/обман/развод

Автор темы (Топик Стартер) Ошибка сервера IOException

Ошибка появилась после добавления пакета PROTOCOL_BASE_GET_USER_INFO_ACK
Boris2105 вне форума Ответить с цитированием
Непрочитано 14.05.2016, 22:40   #2
Аватар для PROGRAMMATOR
Администратор

По умолчанию Re: Ошибка сервера

Клиент у тебя отвалился, а ты продолжаешь его читать. Нужно воспользоваться try {} catch блоком:

try
{
	// code here
}
catch (IOException)
{
	Disconnected();
}
catch (Exception ex)
{
	Disconnected();
 
	log.Error(ex);
}
 
Code: C#
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Непрочитано 15.05.2016, 00:20   #3
Забанен за кидаловo/обман/развод

Автор темы (Топик Стартер) Re: Ошибка сервера

Цитата:
Сообщение от PROGRAMMATOR Посмотреть сообщение
Клиент у тебя отвалился, а ты продолжаешь его читать. Нужно воспользоваться try {} catch блоком:

try
{
	// code here
}
catch (IOException)
{
	Disconnected();
}
catch (Exception ex)
{
	Disconnected();
 
	log.Error(ex);
}
 
Code: C#
Boris2105 вне форума Ответить с цитированием
Непрочитано 15.05.2016, 00:24   #4
Аватар для Awiion

По умолчанию Re: Ошибка сервера

Цитата:
Сообщение от Boris2105 Посмотреть сообщение
Стери этот ужас, в дисконектит
И будет все нормально
Awiion вне форума Отправить сообщение для Awiion с помощью Skype™ Ответить с цитированием
Непрочитано 15.05.2016, 00:29   #5
Забанен за кидаловo/обман/развод

Автор темы (Топик Стартер) Re: Ошибка сервера

Цитата:
Сообщение от Awiion Посмотреть сообщение
Стери этот ужас, в дисконектит
И будет все нормально
то есть реализовывать не надо?
теперь клиент просто закрывается
Boris2105 вне форума Ответить с цитированием
Непрочитано 15.05.2016, 00:34   #6
Аватар для Awiion

По умолчанию Re: Ошибка сервера

Цитата:
Сообщение от Boris2105 Посмотреть сообщение
то есть реализовывать не надо?
теперь клиент просто закрывается
Клиент игры? Или сервера?
Awiion вне форума Отправить сообщение для Awiion с помощью Skype™ Ответить с цитированием
Непрочитано 15.05.2016, 00:36   #7
Забанен за кидаловo/обман/развод

Автор темы (Топик Стартер) Re: Ошибка сервера

Цитата:
Сообщение от Awiion Посмотреть сообщение
Клиент игры? Или сервера?
клиент игры
Boris2105 вне форума Ответить с цитированием
Непрочитано 15.05.2016, 00:40   #8
Аватар для Awiion

По умолчанию Re: Ошибка сервера

Цитата:
Сообщение от Boris2105 Посмотреть сообщение
клиент игры
Тебе единственное что надо была сделать поставить тру\катч в BeginRead,
От туда взять условие когда разрывается соединения, вызывать дисконектит с клиентМенеджера
Awiion вне форума Отправить сообщение для Awiion с помощью Skype™ Ответить с цитированием
Непрочитано 15.05.2016, 00:41   #9
Забанен за кидаловo/обман/развод

Автор темы (Топик Стартер) Re: Ошибка сервера

Цитата:
Сообщение от 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);
                    }
                    }
Boris2105 вне форума Ответить с цитированием
Непрочитано 15.05.2016, 00:41   #10
Аватар для PROGRAMMATOR
Администратор

По умолчанию Re: Ошибка сервера

Цитата:
Сообщение от Boris2105 Посмотреть сообщение
то есть реализовывать не надо?
Нужно, ведь объект игрока нужно удалить (если это требуется - выйти с боя\комнаты\канала). Тебе нужно разобраться почему клиент падает, попробуй изучить BC.log, возможно там он сказал причину.
__________________
composer require laravel/framework
yarn add vue
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
java.io.IOException: Too many open files SunnyX Операционные системы / Operating systems 9 11.01.2011 11:42
Ошибка сервера konopliy Lineage II 1 16.10.2009 15:26


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 16:48. Часовой пояс GMT +3.

Вверх