Boost asio reuse address

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Boost asio reuse address

Boost - Users mailing list

Hi,

Just wanted to know if setting the following option on acceptor should be ever done or not.. When should this be used..

 

  acceptor_.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true));

 

The reason I am asking this is because I have a server application which crashed but the socket did not close. So, the next time, I was bringing up the server, I get the error :

Error occured! Error code = system:98. Message: bind: Address already in use

 

But, even giving the option above, it is not working fine.

I referred to the URL : https://stackoverflow.com/questions/34596638/boost-asio-so-reuseport to figure out the steps in which acceptor should be created from this link.

 

 

Best Regards,

Nishant Sharma

 


_______________________________________________
Boost-users mailing list
[hidden email]
https://lists.boost.org/mailman/listinfo.cgi/boost-users
Reply | Threaded
Open this post in threaded view
|

Re: Boost asio reuse address

Boost - Users mailing list
On 3/01/2018 19:37, Sharma, Nishant wrote:

> Just wanted to know if setting the following option on acceptor should
> be ever done or not.. When should this be used..
>
>    
> acceptor_.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true));
>
> The reason I am asking this is because I have a server application which
> crashed but the socket did not close. So, the next time, I was bringing
> up the server, I get the error :
>
> Error occured! Error code = system:98. Message: bind: Address already in use
>
> But, even giving the option above, it is not working fine.
>
> I referred to the URL :
> https://stackoverflow.com/questions/34596638/boost-asio-so-reuseport to
> figure out the steps in which acceptor should be created from this link.

The option merely sets the corresponding flag on the underlying native
socket.  So the behaviour is the same as whatever that does.

By default, after TCP ports are closed they are still "reserved" for a
brief time to allow stray TCP packets addressed to the previous holder
of that port to be properly discarded; without this there can be
problematic cross-talk from the tail end of a prior conversation,
especially if the connection is interrupted rather than gracefully closed.

It should not be enabled for clients, unless in the rare case where a
client needs to bind to a specific port for firewall or dumb-protocol
reasons.  It might be necessary to enable it for servers if a new server
instance is spawned immediately after killing the old instance.

In no case will it allow you to open a port that is still actually in
use by a still-running previous instance.  The previous instance must be
killed first.

_______________________________________________
Boost-users mailing list
[hidden email]
https://lists.boost.org/mailman/listinfo.cgi/boost-users