Lwip tcp_write полезная нагрузка pbuf выдает несовместимые значения, используя memcpy - PullRequest
0 голосов
/ 07 ноября 2019

Я работаю над конфигурацией 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.

...