Socket Communication
frank.ueberschar at dsa-volgmann.de
frank.ueberschar at dsa-volgmann.de
Tue Sep 11 13:00:02 UTC 2007
To whom it may concern,
I have a small answer regarding TCP/IP sockets in
an older Version of RTEMS (4.5.1). Even if that version
was timed-out for many users...
We are always using a task pair for Socket Communication.
One for the receiver one for the sender in blocking mode.
Both are using the same socket.
My Problem appears when closing this socket on error or if the
destintation system broke down without closing the TCP connection.
Sometimes the Receive Task does not recognize the socket beeing closed
and other times the send task seems to wait for an event rising (sbwait()).
What I want to achive is shutting down the tasks and become ready for
the next communication connect.
What could be an approved solution for that? Do I need to
dup() the socket -- but this seems not to work on that RTEMS version?
(This would in my opinion work-around spurious NOFDREF RTEMS-Fatals)
Opening another socket and connect this would not work for us.
For now the sollution for me was to have a third task keeping
track of timeout pings and close the socket in that context. But when
got returned an error from send() or recv(), one of the tasks has to
close the socket. In this state the receiver or the sender task
would block forever. (For now we let the reading task wait for the
sender task until it leaves the blocking mode.)
Any comments ?
Thank you in advance,
Frank
More information about the users
mailing list