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

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

Ответ
Опции темы
Непрочитано 29.07.2017, 18:33   #1
Пользователь

Автор темы (Топик Стартер) После перезахода сервер отказываеться видить клиент

Заходишь на сервер переходишь на гейм сервер выходишь с него
потом снова заходишь на сервер авторизации все хорошо, переходишь в гейм и гейм сервер отказывается читать или подключать клиент не видит не чего NetworkManager молчит но после клика в консоль все начинает работать как исправить помогите мне пожалуйста
 public TcpClient Client { get; set; }
        public NetworkStream Stream { get; set; }
        public Account Account { get; set; }
        public string Login { get; set; }// незнаю нахуй пусть будет пригодиться!
        public int Id { get; set; }
        byte[] buffer = new byte[2048];
        public int ChannelId { get; set; }
        public int channel_id = -1;
        public int player_id = 0;
        public void setChannelId(int id)
        {
            ChannelId = Id;
        }
        public void Accept(TcpClient client)
        {
            Client = client;
            Stream = client.GetStream();
            ChannelId = -1;
            SendPacket(new PROTOCOL_BASE_CONNECTION_ACK(this));
            Stream.BeginRead(buffer, 0, buffer.Length, BeginRead, null);
        }
        public void BeginRead(IAsyncResult asyncResult)
        {
            try
            {
                int received = Stream.EndRead(asyncResult);
                if (received != 0)
                {
                    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("Server.Game.Network.packets.client." + packet.ToString());
 
                        if (t != null)
                        {
                            if (packet.ToString() != "PROTOCOL_LOBBY_GET_ROOMLIST_REQ") { Logger.Info("[Packet Handler] Receive {1} packet opcode {0}", BitConverter.ToInt16(opcode, 0), packet.ToString()); }
                            //Logger.Info("[Packet Handler] Receive {1} packet opcode {0}", BitConverter.ToInt16(opcode, 0), packet.ToString());
                            ReceivePacket clientpacket = (ReceivePacket)Activator.CreateInstance(t);
                            clientpacket.Client = this;
                            clientpacket.Process(temp);
                            ThreadManager.runNewThread(new Thread(new ThreadStart(clientpacket.RunImpl)));
                        }
                        else
                        {
                            Logger.Info("[Packet Handler] Receive unk packet {0}", BitConverter.ToInt16(opcode, 0));
                            Logger.Trace(temp.ToHex());
                        }
                        received -= length + 4;
                        Array.Copy(buffer, length + 4, buffer, 0, received); // << Копируем оставшиеся данные в начало буфера
                    }
                    Stream.BeginRead(buffer, 0, buffer.Length, BeginRead, Stream);
                }
                else
                {
                    Close();
                }
            }
            catch (IOException)
            {
                Close();
            }
            catch (Exception ex)
            {
                Close();
 
            }
        }
        public void SendPacket(SendPacket packet)
        {
            packet.Client = this;
            packet.WriteImpl();
            byte[] data = packet.ToByteArray();
            byte[] lenght = BitConverter.GetBytes((short)data.Length);
            byte[] opcode = BitConverter.GetBytes(Convert.ToInt16((int)Enum.Parse(typeof(SendOpcode), packet.GetType().Name)));
            byte[] buff = new byte[data.Length + 4];
            Array.Copy(lenght, 0, buff, 0, lenght.Length);
            Array.Copy(opcode, 0, buff, 2, opcode.Length);
            Array.Copy(data, 0, buff, 4, data.Length);
            Stream.Write(buff, 0, buff.Length);
            if (packet.GetType().Name != "PROTOCOL_LOBBY_GET_ROOMLIST_ACK") { Logger.Info("[SendPacket] Receive {1} packet opcode {0}", BitConverter.ToInt16(opcode, 0), packet.GetType().Name); }
            //Logger.Info("[SendPacket] Receive {1} packet opcode {0}", BitConverter.ToInt16(opcode, 0), packet.GetType().Name);
 
        }
        public void Close()
        {
            NetworkManager.Instance.removeClient(this);
        }
        public Account restoreAccount(string acc)
        {
            Account account = AccountManager.getInstance().get(acc);
            if (account == null)
            {
                return null;
            }
            account.setConnected(true);
            this.setAccount(account.player_id);
            return account;
        }
        public void setAccount(int id)
        {
            this.player_id = id;
        }
    }
}
 
Code: C#
вот скрин консоли с клиентом https://hostingkartinok.com/show-ima...8d7d5ad58cd6c1
slawa560 вне форума Ответить с цитированием
Непрочитано 29.07.2017, 20:04   #2
Аватар для Necroz-Team
Пользователь

По умолчанию Re: После перезахода сервер отказываеться видить клиент

Код:
      public void Close()
        {
            NetworkManager.Instance.removeClient(this);
        }
Соединение с сервером разорвано? Сокет не висит?
Код выше чистит лист соединений это понятно, состояние сокета какое? Он как положено высвободился?
Necroz-Team вне форума Ответить с цитированием
Непрочитано 31.07.2017, 13:45   #3
Аватар для Awiion

По умолчанию Re: После перезахода сервер отказываеться видить клиент

slawa560,
Game Server:
Add Packet & Fix Opcode Packet
Packet PROTOCOL_BASE_USER_ENTER
Packet PROTOCOL_BASE_GET_CHANNELLIST
Packet PROTOCOL_BASE_SELECT_CHANNEL
__________________
Разработка Emu: PiercingBlow 90%, APB Reloaded 100%.
Самый действенный инструмент для самообучения - грабли.

Последний раз редактировалось Awiion; 31.07.2017 в 15:11.
Awiion вне форума Отправить сообщение для Awiion с помощью Skype™ Ответить с цитированием
Непрочитано 01.08.2017, 21:03   #4
Пользователь

Автор темы (Топик Стартер) Re: После перезахода сервер отказываеться видить клиент

Ребят исправил все отлично! добавил в void Close()
public void Close()
{
NetworkManager.Instance.removeClient(this);// удаляем из NetworkManager сессию
Stream.Close();// закрываем стрим
Client.Close();// закрываем клиентское соединение
Stream.Dispose();// освобождаем стрим
}
slawa560 вне форума Ответить с цитированием
Непрочитано 02.08.2017, 11:36   #5
Пользователь

По умолчанию Re: После перезахода сервер отказываеться видить клиент

Цитата:
Сообщение от slawa560 Посмотреть сообщение
Ребят исправил все отлично! добавил в void Close()
public void Close()
{
NetworkManager.Instance.removeClient(this);// удаляем из NetworkManager сессию
Stream.Close();// закрываем стрим
Client.Close();// закрываем клиентское соединение
Stream.Dispose();// освобождаем стрим
}
все что касается потоков (stream и производных) метод Сlose уже включает в себя Dispose
Alay вне форума Ответить с цитированием
Непрочитано 03.08.2017, 04:57   #6
Пользователь

По умолчанию Re: После перезахода сервер отказываеться видить клиент

Hay Buddies
I have problem when running the project blackout client
In my database, I have used sha-1 online for my password
and also I have opened port 39190 TCP

but I still cannot Login to the game " Username and password incorrect!"

Can anyone help me?

naraleo вне форума Ответить с цитированием
Непрочитано 08.08.2017, 23:26   #7
Пользователь

Автор темы (Топик Стартер) Re: После перезахода сервер отказываеться видить клиент

Цитата:
Сообщение от naraleo Посмотреть сообщение
Hay Buddies
I have problem when running the project blackout client
In my database, I have used sha-1 online for my password
and also I have opened port 39190 TCP

but I still cannot Login to the game " Username and password incorrect!"

Can anyone help me?

PB-AUTH/CONFIG/SYSTEM.PROPERTIES/AUTOCREATEACCOUNT = TRUE
DELETE OLD ACCOUNT
slawa560 вне форума Ответить с цитированием
Ответ


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не запускается сервер после переноса значений стат с более старой сборки project1994 Lineage II 4 10.07.2016 13:05
Возникла проблема после того как перевел сервер на NO-IP Fil Серверная часть 24 02.11.2012 14:05
Клиент-сервер Zeratyl Курилка / Yak floor 31 18.03.2012 19:17
Клиент и сервер xMETTx Серверная часть 2 07.02.2010 06:02
Клиент вылетает после выбора перса Lelia Lineage II 8 23.01.2009 19:29


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

Вверх