Для работы с архитектурой с прямым и младшим порядком байтов вы должны сделать что-то вроде:

аюсь преобразовать два байта в unsigned short, чтобы я мог получить фактическое значение порта сервера. Я основываюсь на этомспецификация протокола под форматом ответа. Я пытался с помощьюBitConverter.ToUint16 () для этого, но проблема в том, что он не бросает ожидаемое значение. Ниже приведен пример реализации:

int bytesRead = 0;

while (bytesRead < ms.Length)
{
    int first = ms.ReadByte() & 0xFF;
    int second = ms.ReadByte() & 0xFF;
    int third = ms.ReadByte() & 0xFF;
    int fourth = ms.ReadByte() & 0xFF;
    int port1 = ms.ReadByte();
    int port2 = ms.ReadByte();
    int actualPort = BitConverter.ToUInt16(new byte[2] {(byte)port1 , (byte)port2 }, 0);
    string ip = String.Format("{0}.{1}.{2}.{3}:{4}-{5} = {6}", first, second, third, fourth, port1, port2, actualPort);
    Debug.WriteLine(ip);
    bytesRead += 6;
}

Учитывая один пример данных, скажем, для двухбайтовых значений, у меня есть 105 и 135, ожидаемое значение порта после преобразования должно быть 27015, но вместо этого я получаю значение 34665 с использованием BitConverter.

Я делаю это неправильно?

Ответы на вопрос(3)

Ваш ответ на вопрос