As a side note, I hope you are calling the loop below in the
tcpip_thread, not from another application thread, which would violate
lwIP threading.
Aside from that, what Bernhard said is true: the packets are buffer for
retransmission until they are ACKed by the remote side, which cannot
happen while you are in the loop. As a result, you either have to bufer
your data somewhere else and call tcp_write() from the 'poll' or 'sent'
callback - or increase TCP_SND_QUEUELEN to 20 (in your case, depends on
your application) to be able to internally queue as much data as you
have to at maximum.
Simon
Daniel Berenguer wrote:
I'm trying to send a bunch of TCP packets using the raw API but
tcp_write is returning -1 (out of memory) after the 8th packet.
for (i=0 ; i<20 ; i++)
{
strcpy(buffer, "holaaa");
res = tcp_write(pcb, buffer, 7, 0);
tcp_output(pcb);
}
I've used many variants of the above code (with delays, w/o
tcp_output, ...) but the problem is always there. The first packet is
sent immediately after the first tcp_write but then, tcp_write just
pushes the packets into the sending queue. TCP_SND_QUEUELEN is set to
8 so once the TX queue gets overflowed tcp_write starts returning -1
and the contents of the queue is finally sent (only 7 packets of 20
though).
Any idea?
Thanks.
_______________________________________________
lwip-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/lwip-users
_______________________________________________
lwip-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/lwip-users