Я работаю над конфигурацией TCP / IP с использованием библиотеки lwip.
Я пытаюсь отправить буфер символов "Hello", используя структуру pbuf и функцию memcpy. Однако это дает мне противоречивые результаты.
Когда я слушаю порт из Wireshark (вариант 1), «Hello» уже находится в полезной нагрузке. Тем не менее, он расположен в середине полезной нагрузки, например (не начиная с элемента array [0]). Он начинается около 40-го элемента массива char, и до этого значения «Hello» также есть некоторые ненужные значения.
struct pbuf *p;
char msg[400] = "Hello";
// Option 1: Gives me Hello with junk value
p = pbuf_alloc(PBUF_TRANSPORT, 400, PBUF_POOL);
if (!p)
{
xil_printf("Error while allocating pbuf \n\r");
}
memcpy(p->payload, msg, 400);
err = tcp_write(pcb, p, p-> len, 1);
// Option 2: It's OK
err = tcp_write(pcb, "Hello\n\r", strlen("Hello\n\r"), 1);
Я могу использовать вариант 2 для своего приложения. Однако теперь я хочу сделать это и с вариантом 1.