原始LWIP将TCP传输发送到静态IP

时间:2017-06-07 21:48:32

标签: c tcp embedded packet lwip

我的TCP Echo示例在我的硬件上运行良好,昨天想出了如何让UDP广播正常工作。经过深思熟虑后,我意识到我真正需要的是能够建立到静态IP的TCP连接,这个想法是我的硬件可以连接到某种服务器然后使用该连接对于它的所有交易。不同之处在于,echo示例设置了一个被动连接,它与传入源绑定(据我所知),我想故意将连接发送到一个已知的IP。

根据我在Wikia Here Here

上找到的内容

我尝试作为基本案例来实现可以将数据包发送到定义的IP的功能。我只是试图将数据包发送到我的电脑,我正在Wireshark上寻找它。

GetComponent

最后一个if语句存在,以便我可以使用调试器检查wr_err值。错误回来了,但在wireshark上看不到包。我的设置是我的硬件以及我的PC以孤立的方式连接到路由器。本地PC的IP地址为12.12.12.43

我在这里错过了一步吗?

1 个答案:

答案 0 :(得分:1)

如果出现以下情况,tcp_write()函数将失败并返回ERR_MEM:

  1. 数据长度超过当前发送缓冲区大小。
  2. 传出段的队列长度大于lwipopts.h中定义的上限。
  3. 可以使用tcp_sndbuf()函数检索输出队列中可用的字节数。

    潜在解决方案:

    1. 再试一次,但发送的数据较少。
    2. 监视发送缓冲区中可用的空间量,并仅在发送缓冲区中有可用空间时发送(更多)数据。
    3. 建议:

      tcp_snd_buf()可用于查找可用的发送缓冲区空间。

      tcp_sent()可以使用回调函数实现,当发送黄油空间可用时将调用该函数。