Arduino WiFi Shield不会发送整个TCP数据包

时间:2014-05-21 12:31:23

标签: sockets networking arduino wifi

我有一个带有Arduino WiFi盾牌的Arduino Uno R3。 WiFi屏蔽具有最新固件(V1.1.0)。我正在尝试向路由器发送大约900字节的数据包(该数据包用于设置UPnP端口映射)。该数据包存储在程序存储器中以节省SRAM。使用strcat_P,我可以将数据包从内存中拉入缓冲区并使用WiFiClient库(TCP)发送。

问题在于我无法发送整个数据包。为了测试,我只是将数据包发送到位于同一LAN上的计算机,我使用数据包嗅探器查看数据包。使用WiFiClient.write(),我会得到不同的性能,具体取决于我使用的缓冲区的大小。我似乎得到了最好的性能调用WiFiClient.write(),缓冲区大小为80,直到整个数据包被发送"。大于80的任何内容都会在另一端产生空白数据包。但是,对于80,我通常只能看到大约500个字节被传输。数据包总是在任意点被切断。有谁知道这可能导致什么?

我做了很多谷歌搜索,我看到其他人有类似的问题。不过,我从未遇到过解决方案。

1 个答案:

答案 0 :(得分:0)

我知道这已经过时了,但我最近发现this article解决了您所描述的问题。

tl; dr - 你一次只能写90个字节到wifi屏蔽缓冲区