I see advantages and disadvantages to both.
For a socket listener, a background thread would be good I would imagine, if the server is attempting to close, it obviously does not need or want to accept connections and any connection that is in the process of starting should stop...immediately.
For a connected socket, my opinions vary. Background is good so that if a server is closing and has hundreds of threads (potentially) ending them all gracefully could take time, and if the server is running as a service, this could cause the service controller to have a fit because the service didn't end fast enough, but background threads would just stop. But it also causes havoc for the client(s) connected (maybe) and they wouldn't receive notification that the connection died until it timed out or a check was made by the client...
Anyone have any thoughts or opinions?