I've read documentation for shutdown function in <a href="http://www.gnu.org/manual/glibc-2.2.5/html_node/Closing-a-Socket.html#Closing%20a%20Socket
">GNU C Library</a> and <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/shutdown_2.asp
">MSDN</a> and I'm slightly confused. It seems to me that glibc shutdown is "hard" (doesn't wait transmission of already send data), while behaviour of Windows shutdown depends on SO_LINGER setting. Or am I wrong? In both systems SO_LINGER option seems to affect close() syscall: maybe shutdown breaks connection non-gracefully on both systems regardless of SO_LINGER? Can anybody explain that?
I'm particulary interested in doing hard shutdown (discarding all data waiting to send) on both platforms. How to do that?