I have a server app which listens on a port. If the app crashes (with a segmentation fault for example) and I attempt to restart it, I cannot bind() to that same port address again – I receive an “address in use” error.
Apparently, the TCP/IP stack did not clean up resources after the client application crashed. This seems like a serious flaw for a robust OS. I have to believe there is a workaround for this, or perhaps this is a recently introduced bug in 6.3.
Anyone have any information about this?
TIA,
Jorge
What is happening to you is normal, this is how TCP/IP works, is not a problem of QNX.
Look at the link:
openqnx.com/PNphpBB2-viewtopic-t5490-.html
The links given by johnny can help you. When the server closes due to an error, the server goes to the TIME_WAIT state. In QNX, you should wait about 1 minute to be able to restart the server again. There are several options to change this, but better read the information in the links given by johnny.
I recommend you the book:
Unix Network Programming: The sockets networking api by Richard Stevens.
It has helped me a lot.
I hope it helps.
Hi,
That is not the fault of QNX. You use setsockopt() and use the SO_REUSEADDR MAcro.
Hope this will solve your problem
Enjoy