Я создаю сервер C ++, который получает данные от клиента в двоичном протоколе. протокол выглядит так:
Код сообщения: 1 БАЙТ | Длина данных: 4 байта | Данные: X BYTE
поэтому мне нужно отправить информацию от клиента, которая соответствует этому протоколу. так скажем, что я хочу отправить эти данные от клиента:
Код сообщения: 100
Длина данных: 4
Данные: приятно
Как я могу отправить в розетку? я имею в виду, что для длины данных требуется только 1 байт, но в протоколе я хочу, чтобы он был 4 байта постоянно. так как я могу завершить остальные 3 байта? и как я могу отправить данные бросить сокет, который не является строкой?
пока это мой код:
import socket
PORT, IP = 5280, '127.0.0.1'
SERVER_ADDRESS = (IP, PORT)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(SERVER_ADDRESS)
code = 100
length = 14
data = "nice"
sock.sendall(code)
sock.sendall(length)
sock.sendall(data.encode("ASCII"))
print "Server said:", sock.recv(1024) # Server response
sock.close()
Я понятия не имею, как это сделать, как я хочу ... и как преобразовать все в двоичный файл. Небольшие исправления в моем коде помогут, спасибо.