Итак, я работаю над проектом с проприетарным протоколом связи.Мне нужно отправить данные в заданном формате и координаты вверх, вниз, влево и вправо на определенный IP-адрес.Связь происходит через TCP, и мне нужно запрограммировать клиента TCP на python для отправки данных в следующем формате:
IP-адрес / адрес рукопожатия: 192.166.166.166
Это формат данных .
Тип данных - беззнаковый символ 0-255 (8-битный двоичный код), а длина данных - 6-64 бит.
Длина данных каждого кадра составляет 10-64 бита.
Итак, если я хочу переместить объект с 1.0.0.1 в (23, 45, 67, 89), это следующая инструкция:
Отправка 255 255 10 3 1 0 0 123 45 67 89 по указанному IP-адресу.Я предполагаю, что указанный IP-адрес 192.166.166.166.Вы можете обратиться к формату данных, чтобы понять эти данные, которые я должен отправить.Это довольно просто.
Вопрос в том, как мне отправить эту серию неподписанных символов через TCP в python?
Я пробовал следующее:
import socket
host = '192.166.166.166'
port = 80 # 80 Because TCP
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
data = '255 255 10 3 1 0 0 1 23 45 67 89'
s.sendall(data)
result = s.recv(1024)
s.close()
print('Received', repr(result))
Очевидно, это не работает.Я не указал unsigned char и просто отправляю необработанные данные и пробелы.
Вот что я получаю взамен с сервера:
('Received', '\'HTTP/1.0 400 Bad Request\\r\\nServer: Mini-IoT-314\\r\\nDate: , 31 1969 23:59:59 GMT\\r\\nPragma: no-
cache\\r\\nCache-Control: no-cache\\r\\nContent-Type:
text/html\\r\\nConnection: close\\r\\n\\r\\n<HTML><HEAD><TITLE>400 Bad
Request</TITLE></HEAD>\\n<BODY BGCOLOR="#cc9999"><H4>400 Bad
Request</H4>\\nCan\\\'t parse request.\\n</BODY></HTML>\\n\'')
Теперь я не уверен, что делать и как отправлять эти данные, чтобы сервер мог обработать эти данные надлежащим образом.Я был бы очень признателен за помощь здесь.