Я думал об этом. Но я сейчас работаю над одним проектом и терять время на этом не хочется. Пока я буду пользоваться своим костылем. Вот это кусок работает, получает данные. Теперь надо их в словарь раскидать
(мне то надо всего три значения выдернуть):
#!/usr/bin/env python3
import socket
import struct
import select
host = ('a.b.c.d', 27015)
host2 = ('localhost', 8888)
BUFF = 1400
A2S_INFO = 0x54
A2S_PAYLOAD = 'Source Engine Query'
BytesField = '<B'
StringField = '<s'
LongField = '<l'
header = struct.pack(LongField, -1)
request_type = struct.pack(BytesField, A2S_INFO)
payload = A2S_PAYLOAD.encode(encoding='utf-8')
packet = b''.join([header, request_type, payload, b'\x00'])
print('header', header)
print('request_type:', request_type)
print('payload:', payload)
print('packet:', packet)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto(packet, host)
r = select.select([s], [], [], 4)
print(r[0][0].recv(BUFF))
Мой код конечно просто ужасен. Но сетевым программированием не занимался, даже тут мало что понимаю (например про header, это видимо стандартно, так как в документации ничего про это нет, но в чужом коде это увидел и применил). Когда основная часть проекта будет завершена, я смогу уделить больше времени либо своей либе, либо той. Надо еще посмотреть под какой она там лицензией..
В той либе ошибки именно поддержки серверов. Самих серверов полно, и некоторые отдают данные по разному. Где-то в коде видел коммент, что это пока не поддерживается, то скоро будет. Так что возможно когда я закончу, они уже допилят. )))