Essential Networking Module User’s Guide : PART II The Networking Package : Chapter 8 The Windows Socket Adapter : Socket Security
Socket Security
Microsoft documents a possible network security risk in the Windows socket implementation when using a network socket with the SO_REUSEADDR option. The possibility exists for a network application to steal the port of another application, which could lead to a “denial of service” attack or data theft.
In general, socket security applies to a server-side network process that binds to a specific port, which accepts connections and receives IP datagram traffic. A client application can also be affected if it must bind to a specific port.
The Windows socket implementation provides the SO_EXCLUSIVEADDRUSE socket option that should be used if socket security is a concern in your application. For more information regarding the use of SO_REUSEADDR and SO_EXCLUSIVEADDRUSE, please see:
msdn.microsoft.com/en-us/library/windows/desktop/ms740621%28v=vs.85%29.aspx.
The following examples demonstrate setting the SO_EXCLUSIVEADDRUSE socket option using the Networking package.
 
// TCP sockets
RWWinSockInfo winsock;
RWInetType type;
RWSocket socket(type);
socket.setsocketopt(SO_EXCLUSIVEADDRUSE, 1);
socket.listen();
...
 
// UDP sockets
RWWinSockInfo winsock;
RWSockType udp("inet", AF_INET, SOCK_DGRAM, IPPROTO_UDP);
RWSocket socket(udp);
socket.setsocketopt(SO_EXCLUSIVEADDRUSE, 1);
...