After reading these two posts:

- http://andaleebcse.blogspot.com/2010/04/reusing-ports-socket-option-soreuseaddr.html about SO_REUSEADDR and SO_EXCLUSIVEADDRUSE on Windows

- http://meteatamel.wordpress.com/2010/12/01/socket-reuseaddress-property-and-linux/ about SO_REUSEADDR on Linux

I would suggest to alter the code in the org.simpleframework.transport.connect.Acceptor#bind(SocketAddress) method as follows:

// Enable SO_REUSEADDR on Unix platforms to allow re-using
// the socket even if it's in the TIME_WAIT state.
if (IS_NOT_WINDOWS) {
socket.setReuseAddress(true);
}
// On Windows, enabling SO_REUSEADDR would actually
// not be a good thing since it allows a second
// process to bind to an address even it's already
// bound by another process. Using SO_EXCLUSIVEADDRUSE
// would probably be better but it's only supported by
// recent Windows versions (XP SP2, Windows Server 2003).
...and I could not find a way to set this option in Java...

BTW: the comments above are borrowed from
http://www.koders.com/java/fid86CFE70F4BB6143F2BF01E5579992D107E017CFE.aspx?s=REUSEADDR#L86