On 11/11/2020 10:14, Simone Bordet wrote:
Hi,

the javadocs for SocketOptions.SO_REUSEADDR states that: "This is used
only for MulticastSockets in java".

However, the javadocs for ServerSocket.setReuseAddress(boolean) goes a
great length explaining a behavior that applies to TCP sockets
(referencing SocketOptions.SO_REUSEADDR).

Similarly, the javadocs for SocketOptions.SO_REUSEPORT states: "This
option enables and disables the ability to have multiple sockets
listen to the same address  and port."
This seems to apply to listening sockets only, but then it says that
it is valid for SocketImpl (not ServerSocketImpl).

Can this be clarified?

java.net.StandardSocketOptions is the "user facing API" that has clear descriptions of the standard socket options. That's the place to read about SO_REUSEADDR and SO_REUSEPORT.

java.net.SocketOptions is a legacy JDK 1.1 interface for the underlying socket implementations (SocketImpl, DatagramSocketImpl). It's really SPI rather than API and you shouldn't find any usages in any of the APIs.

So yes, there is technical debt here and ideally there would be pass done over Socket and ServerSocket to change the links. It might also be useful to put text in the SocketOptions class description to redirect people to StandardSocketOptions.

-Alan







Reply via email to