在echo示例中,我们有这个函数,它再次发送相同的数据包以回显数据,我想改变它,以便发送任何用户发送的固定数据,所以我改变了这个:
err = tcp_write(tpcb, p->payload, p->len, 1);
到此:
char* as="ki";
err = tcp_write(tpcb, as, 3, 1);
当我运行我的应用程序时,它不回显任何东西,为什么会这样?
答案 0 :(得分:0)
你的问题在于C代码。而不是
char * as = "ki"
使用
char as[] = "ki"
或者你可以做pbuf alloc,也许可以为你生成一些内存。
es->p = pbuf_alloc(PBUF_TRANSPORT, strlen((char*)"ki") , PBUF_POOL);
pbuf_take(es->p, (char*)"ki", strlen("ki"));
此外,您还应该检查返回条件,如果tcp_write提供除ERR_OK以外的任何内容,那么您应该再试一次并尝试更加努力。我在POLL机制中使用tcp write,但是这会产生低吞吐量,当我在main while循环中使用它时,我的吞吐量会相对更好。