[En-Nut-Discussion] TCP state machine reset
Ole Reinhardt
ole.reinhardt at embedded-it.de
Wed Nov 5 16:49:30 CET 2014
Hi Alister,
sorry for the late answer. I'm very busy :)
Your code looks ok for the first moment. But there are some questions left:
- What exactly does get_Sony_cmd(&TCPconnected);
Can you break down the code to a minimum? This seem to be the
routine, where you read from the socket, right? I just want to get
sure, that nothing else is the reason for the failing timeout.
- Which behaviour do you expect exactly? When the socket is
disconnected, the TCP connection is closed (for sure). So in this
case nothing could be send out from Nut/OS side.
So your socket would need to stay opened, as long as you want to send
some data between your two endpoints.
So the next steps would be to review how get_Sony_cmd() is implemented..
Best regards,
Ole
Am 04.11.2014 16:41, schrieb alister:
>
> Hi Ole,
>
> A few words of explanation may help.
>
> The Ethernut is a TCP server, and listens for one client only.
>
> I have a 2 second receive timeout so my program loops waiting for the client.
>
> When the client connects, I stay connected forever, until the link is broken or power
> fails. Every 15 seconds I send a heartbeat message unless the client sends a
> message requesting data.
> Some of my data is about 12k long, so I make the mss large and the TCP stack
> chops the messages up
> as separate packets of 1514 bytes according to Wireshark. That all works nicely!
>
> My only problem is that if the client disconnects, I close the socket and open it
> again,
> but the 2 second timeout no longer works. I can receive client requests when he
> reconnects,
> but without the receive timeout, my heartbeats fail to go out.
>
> Greetings,
> Alister
>
> On Tue 04/11/14 3:05 PM , Ole Reinhardt ole.reinhardt at embedded-it.de sent:
>> Hi Alister,
>>
>> could you please post a short code example of how you setup your
>> sockets?
>> Best regards,
>>
>> Ole
>>
>>
>> Am 04.11.2014 15:56, schrieb alister:
>>> Hi All,
>>>
>>> If the far end closes my TCP server link on an
>> Ethernut 1.3 then the next time I> make a TCP socket the receive timeout function
>> doesn't seem to work.>
>>> Is there a way to reset the TCP state machine or
>> have I done something nooby?>
>>> I wait 2 seconds before opening a new
>> socket.>
>>> Regards,
>>> Alister
>>>
>>>
>>>
>>>
>> _______________________________________________>
> http://lists.egnite.de/mailman/listinfo/en-nut-discussion>
>>
>> --
>> kernel concepts GmbH Tel: +49-271-771091-14
>> Sieghuetter Hauptweg 48 Mob: +49-177-7420433
>> D-57072 Siegen
>> http://www.embedded-it.dehttp://www.kernelconcepts.de
>>
>>
>
>
--
kernel concepts GmbH Tel: +49-271-771091-14
Sieghuetter Hauptweg 48 Mob: +49-177-7420433
D-57072 Siegen
http://www.embedded-it.de
http://www.kernelconcepts.de
More information about the En-Nut-Discussion
mailing list