Я делаю сервер на Python для своего проекта GMS 2 и пишу клиент в GameMaker. Но как-то, когда я использую только:
struct.unpack('B', data[:1])[0]
Это работает, но когда я пытаюсь отправить строку потом:
struct.unpack('Bs', data[:1])[0]
Это дает мне следующую ошибку:
mid = struct.unpack('Bs', data[:1])[0]
struct.error: unpack requires a buffer of 2 bytes
Это весь код, который я использую для получения данных:
import socket
import struct
UDP_IP = "127.0.0.1"
UDP_PORT = 5555
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
sock.bind((UDP_IP, UDP_PORT))
while True:
data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
msg_id = struct.unpack('Bs', data[:1])[0]
print(msg_id)
#if mid == 0:
# struct.unpack('Bp', data[:1])[0]
И вот как я отправляю его в GameMaker:
buffer_seek(global.Buffer, buffer_seek_start, 0);
buffer_write(global.Buffer, buffer_u8, 0); //Sends which PACKET ID we should decode
buffer_write(global.Buffer, buffer_string, global.Username); //Sends username as a "buffer_string" type
network_send_udp_raw(socket,"127.0.0.1", 5555, global.Buffer, buffer_tell(global.Buffer));