вопрос про network

Aslan

Знаменитый
Пользователь
Сообщения
70
Розыгрыши
0
Репутация
32
Реакции
4
Баллы
1 260
В классах SendablePacket & ReceivablePacket имеются такие методы как read&write с префиксами "B,C,H,Q,S и т.п.".

package l2ft.commons.net.nio;

public abstract class ReceivablePacket<T> extends AbstractPacket<T> implements Runnable
{
protected int getAvaliableBytes()
{
return getByteBuffer().remaining();
}

protected void readB(byte[] dst)
{
getByteBuffer().get(dst);
}

protected void readB(byte[] dst, int offset, int len)
{
getByteBuffer().get(dst, offset, len);
}

protected int readC()
{
return getByteBuffer().get() & 0xFF;
}

protected int readH()
{
return getByteBuffer().getShort() & 0xFFFF;
}

protected int readD()
{
return getByteBuffer().getInt();
}

protected long readQ()
{
return getByteBuffer().getLong();
}

protected double readF()
{
return getByteBuffer().getDouble();
}

protected String readS()
{
StringBuilder sb = new StringBuilder();
char ch;
while((ch = getByteBuffer().getChar()) != 0)
sb.append(ch);
return sb.toString();
}

protected abstract boolean read();
}
что означают эти буквы в конце названии метода?
Могу предположить, что буквы например "S" означает ReadString, а как на счет тогда Q, F, D и т.п.
 
это для пакетки
 
понятно что для пакета, ну зачем они так названы? хочу понять обозначение этих букв. Когда читаю код они путают меня.
 
protected void readB(byte[] dst)
protected int readC()
protected int readH()
protected int readD()
protected long readQ()
protected double readF()
protected String readS()
жирные буквы
 
BYTE (byte[]), HWORD (short), DWORD (int32/int), QWORD (int64/long), FLOAT (однако тут почему-то юзается double), CHAR (char в Си), string.

Короче говоря, это все типы из C/C++, на котором написан клиент и сервер.
 
Последнее редактирование:

    Aslan

    Баллов: 1
    За ответ

    zcxv

    Баллов: 18
    Спасибо за в клад в развитие форума
Спасибо!
Просто написали бы WriteByte() WriteDauble().
где то еще встречал метод writeImpl -Impl что означает?
 
Спасибо!
Просто написали бы WriteByte() WriteDauble().
где то еще встречал метод writeImpl -Impl что означает?
implementation - реализация, так как в SendablePacket это абстрактный метод.
 
Спасибо!
Просто написали бы WriteByte() WriteDauble().
Особенно Dauble. Тогда придется думать над тем, какой тип выбрать, т.к. типы в c/c++ и java - чуть более, чем полностью, отличаются. Сишный char, это например, byte в джаве; а сишного byte вообще не существует в джаве, как типа (только костыли вида int pew = buf.getByte() & 0xff, чтобы получить unsigned).
 
Я привык к четким и понятным сигнатурам.
 
Я привык к четким и понятным сигнатурам.
И да зачем вы лезете туда где не разбираетесь? Тут вполне логично сделано или вы представляете свою структуру описывать ещё и с ошибками? Да и тем более после сообщения с квестами то это очень смешно и как вы допустили элементарную ошибку.
// d (SdSddddddddddffdQdddddddddddddddddddddddddddddddddddddddffdddchhd)
И вот это вы будет описывать своими
writeC - не знаю что вы тут придумаете
writeD - ну тут ваш
writeS - ну тут ваш String (мб назовете Strong)
и т.д всё сделано логично и зачем вам лезть туда где вы не понимаете?
 
И да зачем вы лезете туда где не разбираетесь? Тут вполне логично сделано или вы представляете свою структуру описывать ещё и с ошибками? Да и тем более после сообщения с квестами то это очень смешно и как вы допустили элементарную ошибку.
// d (SdSddddddddddffdQdddddddddddddddddddddddddddddddddddddddffdddchhd)
И вот это вы будет описывать своими
writeC - не знаю что вы тут придумаете
writeD - ну тут ваш
writeS - ну тут ваш String (мб назовете Strong)
и т.д всё сделано логично и зачем вам лезть туда где вы не понимаете?
Так в том то и проблема-хочу понять чего не понимаю.
Я предположил что эти символы могут означать, но "H C D Q F" дал повод сомнению, когда D вместо Double возвращает int а F вместо Float возвращает Double.
Думал вопрос задал в разделе для новичков.
 
  • Мне нравится
Реакции: kick

    kick

    Баллов: 32
    За сообщение
Назад
Сверху Снизу