protected override void OnEof()
{
base.OnEof();
// the channel will send no more data, and hence it does not make sense to receive
// any more data from the client to send to the remote party (and we surely won't
// send anything anymore)
//
// this will also interrupt the blocking receive in Bind()
ShutdownSocket(SocketShutdown.Send);
}