public void Dispose()
{
try {
ClientSocket.Shutdown(SocketShutdown.Both);
} catch {}
try {
DestinationSocket.Shutdown(SocketShutdown.Both);
} catch {}
//Close the sockets
if (ClientSocket != null)
ClientSocket.Close();
if (DestinationSocket != null)
DestinationSocket.Close();
//Clean up
ClientSocket = null;
DestinationSocket = null;
if (Destroyer != null)
Destroyer(this);
}