public void Disconnect()
{
if (_socket == null)
return;
while (_receiving) {
Thread.Sleep(50);
}
_running = false;
_socket.Shutdown(SocketShutdown.Both);
_socket.Close();
_socket = null;
Disconnected?.Invoke();
}