DanS
DanS

Reputation: 1797

Resetting socket connection

My application connects as a client across an ethernet to a server process.

As the server is well known and will not change, UDP and TCP are both setup using

socket(); 
setsockopt(SO_REUSEADDR);
bind(); 
connect();

The connection protocol includes heartbeats sent both ways.

When I detect an error with the connection e.g. hearbeat timeout, I need to reset the connection.

Is it sufficient just to connect() to the NULL address and then re-connect() after a short pause, or should I close the socket and then reinitialise from scratch?

thanks

Upvotes: 3

Views: 6800

Answers (2)

Nikolai Fetissov
Nikolai Fetissov

Reputation: 84151

You have to close(2) the socket and re-do everything again. Why do you bind(2) on the client?

Upvotes: 2

Steve Townsend
Steve Townsend

Reputation: 54128

After a socket error you have to discard the one in hand and restart the setup with a new socket.

Winsock documentation, for example:

When a connection between sockets is broken, the sockets should be discarded and recreated. When a problem develops on a connected socket, the application must discard and recreate the needed sockets in order to return to a stable point.

Upvotes: 2

Related Questions