На самом деле, я сделал то же самое, что и вы, я использовал WireShark для просмотра байта, отправленного и полученного с помощью функции rconTool по умолчанию в паре для Black Ops.
Другой совет:
Команда «status» дает вам много информации о текущих игроках, но не о команде каждого из них.
Вместо этого лучше использовать «teamstatus», этот дает вам ту же информацию, но с командой каждого игрока.
У меня сейчас проблемы с идеальным разбором ответа, но для получения понятного ответа используйте это:
замените:
byte[] bufferRec = new byte[65000];
client.Receive(bufferRec);
на:
byte[] bufferRec;
while (client.Available == 0)
{
Thread.Sleep(10);
}
client.Receive(bufferRec);
string response=Encoding.ASCII.GetString(bufferRec);
var list= response.Split('\n');
Таким образом, у вас будет массив с каждым игроком, отдельным в ряду.
Кстати: я мак, я сейчас зарегистрирован, не был этой ночью
Редактировать: да, я не заметил, что вы уже попробовали команду teamstatus.
Вам нужно посмотреть на число, возвращаемое клиентом. Доступно, потому что сервер отправляет только 1168 байт за раз, так что если клиент.Avalaible> 1168, вам нужен второй буфер для получения второго fнизкий с client.receive.
На самом деле есть только два возможных числа для client.avalaible: 1168 и 2336 (да, двойное), я не знаю почему, но им не удалось отправить точноечисло данных, буфер всегда заполнен или пуст.
Я также заметил, что второй receive () похож на "вставку" в первый буфер.
Вы будете иметь в hte begginigдополнительная информация первого метода Receive (), а затем «шума» старого.
Просто взгляните, вы поймете, что я имею в виду.
Я сейчас на работе, но сегодня вечером я опубликую свой код, чтобы помочь.