$ true | nc -q 3 esp8266 23
HELLO
HELLO
HELLO
HELLO
HELLO
HELLO
HELLO
HELLO
$
So this ran for 3 seconds (-q 3) and resulted in a whopping 8 packets received. Looking at tcpdump, here's a typical round-trip:
00:00:00.363428 IP 192.168.0.29.23 > 192.168.0.3.34623: Flags [P.], seq 7:13, ack 1, win 5840, length 6
0x0000: 4500 002e 0155 0000 ff06 3904 c0a8 001d E....U....9.....
0x0010: c0a8 0003 0017 873f 0000 5f76 dafd 3fd9 .......?.._v..?.
0x0020: 5018 16d0 3246 0000 4845 4c4c 4f0a P...2F..HELLO.
00:00:00.000027 IP 192.168.0.3.34623 > 192.168.0.29.23: Flags [.], ack 13, win 29200, length 0
00:00:00.355630 IP 192.168.0.29.23 > 192.168.0.3.34623: Flags [P.], seq 13:19, ack 1, win 5840, length 6
0x0000: 4500 002e 0156 0000 ff06 3903 c0a8 001d E....V....9.....
0x0010: c0a8 0003 0017 873f 0000 5f7c dafd 3fd9 .......?.._|..?.
0x0020: 5018 16d0 3240 0000 4845 4c4c 4f0a P...2@..HELLO.
The timestamps are packet inter-arrival times, e.g., it took 355ms from the ACK sent by my laptop 'til the next "HELLO" data packet. So my laptop responds in microseconds with the ACK and the ESP takes its sweet time.
Maybe my Wifi is borked? Well, the initial syn-ack came back from the ESP in ~100ms and I routinely see ACKs from the ESP in 30ms when my laptop sends data to the ESP.
If I run two connections like the above at the same time I get no more packets per second, each connection runs at half the speed of the above.
Is anyone else seeing this? Are there any work-arounds?
I put my code into a github repo: https://github.com/jeelabs/ESP8266-bandwidth, the main app being https://github.com/jeelabs/ESP8266-band ... ser_main.c