Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
PROTOCOL_LOGIN_ACK
#21
Awiion Написал:Ты что делаешь? о.0
Тебя за такое на костре сожгут Sad

Код:
public int ReadInt() => reader.ReadInt32();

хахахахахаха не сомневаюсь
слушай а вот как реализовать ReadBytes ?

и после всех маникуляций снова такая фигня(
[Изображение: 8k_1214NFZA.jpg]
Ответ
#22
Boris2105, зайди на msd, там все описано и показана.
Ответ
#23
PROGRAMMATOR

А как с этим быть?
[Изображение: 8k_1214NFZA.jpg]
Ответ
#24
[Error] Disconnect - этого мало чтобы понять, что случилось.
Ответ
#25
PROGRAMMATOR Написал:[Error] Disconnect - этого мало чтобы понять, что случилось.

[SRC="csharp"]
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("PiercingBlow.Login.Network.Recv." + packet.ToString());

if (t != null)
{
ClientPacket clientpacket = (ClientPacket)Activator.CreateInstance(t);
clientpacket.Client = this;
clientpacket.Process(temp);
}
else
{
Log.Info("PacketId = {0}", BitConverter.ToUInt16(opcode, 0), buffer.Length);
Log.Trace(temp.ToHex());
}
received -= length + 4;
Array.Copy(buffer, length + 4, buffer, 0, received); // << Копируем оставшиеся данные в начало буфера
}
Stream.BeginRead(buffer, 0, buffer.Length, BeginRead, Stream);
}
else
{
OnDisconnected(this);
}
}
catch (IOException)
{
OnDisconnected(this);
}
catch (Exception ex)
{
OnDisconnected(this);

Log.Error("Disconnect",ex);
}
}

[/SRC]

[SRC="csharp"]
WriteB(new byte[15]);
string id = account.Id.ToString();
WriteC(0);
WriteS(id, id.Length);
WriteC(0);
WriteC(account.Login.Length);
WriteS(account.Login);
WriteQ(account.Id);
WriteD((int)state);
[/SRC]
Ответ
#26
Код:
Log.Error(ex);
Ответ
#27
PROGRAMMATOR Написал:
Код:
Log.Error(ex);

и что тут?
[Изображение: wITIqYW4MRk.jpg]
Ответ
#28
Мне показалось, что ты юзаешь NLog. Тогда:

[SRC="csharp"]Log.Error($"{ex.Message}\n{ex.StackTrace}");
[/SRC]
Ответ
#29
PROGRAMMATOR Написал:Мне показалось, что ты юзаешь NLog. Тогда:

[SRC="csharp"]Log.Error($"{ex.Message}\n{ex.StackTrace}");
[/SRC]

PROGRAMMATOR
, как реализовать ReadBytes , в примерах msdn только конкретные числа
[SRC="csharp"]

MemoryStream stream;
BinaryReader reader;

/// <summary>
///
/// </summary>
/// <param name="buffer"></param>
public void Init(byte[] buffer)
{
stream = new MemoryStream(buffer);
reader = new BinaryReader(stream);
}

/// <summary>
///
/// </summary>
/// <returns></returns>
///
protected int ReadShort() => reader.ReadInt16();
protected int ReadInt() => reader.ReadInt32();
protected byte ReadByte() => reader.ReadByte();
//protected byte[] ReadBytes() => reader.ReadBytes();
protected string ReadString() => reader.ReadString();

[/SRC]
Ответ
#30
BinaryReader.ReadBytes - метод (Int32).

Вот это:

[SRC="csharp"]protected string ReadString() => reader.ReadString();
[/SRC]


Для PB не подходит, так как размер строки может быть фиксированным (без указания размера в самих данных), а так же длина текста может быть в int или short.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Структура PROTOCOL_LOGIN_ACK Sojang 15 4,020 01-20-2016, 01:02 AM
Последний пост: PROGRAMMATOR

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


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