I assume when I call the function "send()", a request message is sent out to other end, this part is okay. Then when calling the "recv(socket, &buffer, 0)", the thread should be blocked here and wait for a packet arrive. If a packet arrived, the payload will be copied to the buffer and the thread is unblocked so the debug_flag will increase one. However when I check with Wireshark, the request message did sent out and the other end did respond. I do not understand why the recv() can not receive the first response message and continue blocking there. When the other end respond a second message then, the recv() copied the message to the buffer and unblocked the task.
Am I misunderstood the usage of the recv() or other things I have to pay attention? The Wireshark traffic is: A ----INVITE (request msg)----> B (send() here and calling recv() immediately) A <----180 RING (response msg)---- B A ----ACK ----> B (The lwip stack send an simple ACK here, but I can not receive the "180 RING" message) A <----200 OK---- B A ----ACK ----> B (The recv() received the "200 OK" here, look like it skipped/ignored the previous "180 RING") -- View this message in context: http://lwip.100.n7.nabble.com/Can-not-receive-data-by-recv-or-netconn-recv-tp21182p21184.html Sent from the lwip-users mailing list archive at Nabble.com. _______________________________________________ lwip-users mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/lwip-users
