Получение данных, массив данных в шестнадцатеричном представлении, из скрипта Python за сокета в C
Я пытаюсь получить данные через сокет-соединение из скрипта python. Похоже, я не знаю, как получить эти данные.
intreadETH(intsock, char **msg){ printf("Read\n"); int n; *msg = (char *)malloc(sizeof(char) * 256); bzero(*msg, 256); n = read(sock, *msg, 255); return n; }
Это простая функция чтения.
Я успешно передал сообщение с хост-компьютера(python) на сервер(C) с помощью простого сообщения. Мой код python предназначен только для тестирования прямо сейчас.
import socket import time HOST = '192.168.99.149' # The server's hostname or IP address PORT = 8080 # The port used by the server with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect((HOST, PORT)) time.sleep(2) s.sendall(b'Hello, world\r') s.detach() s.close()
Это работает, сервер получает полное сообщение "Привет, мир" без каких-либо проблем. Затем я могу отправить сообщение столько раз, сколько захочу, без каких-либо проблем.
Что я уже пробовал:
Теперь, если я изменю скрипт python, чтобы он выглядел так.
import socketimport time HOST = '192.168.99.149' # The server's hostname or IP address PORT = 8080 # The port used by the server with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect((HOST, PORT)) time.sleep(2) packet = bytearray() packet.append(0xBF) packet.append(0xAB) packet.append(0xCD) packet.append(0xEF) packet.append(0x0D) bytePacket = bytes(packet) s.sendall(bytePacket) time.sleep(2) s.detach() s.close()
Как исходный сценарий, так и этот обновленный сценарий отправляют сообщения типа байт с возвратной кареткой. Поэтому они выглядят и думают, что они идентичны на стороне питона. Однако я чувствую, что на стороне сервера(C) они разные.
когда я отправляю сообщение, я получаю то, что выглядит как четыре перекрывающихся алмаза с ? в каждом из них.
Я попытался внести изменения в инструкцию print, но получаю предупреждения, если изменяю инструкцию print на %d, %x или %c. Думая, что форматер просто нужно было изменить.
Есть ли у кого-нибудь какое-нибудь представление о том, что я упускаю?