private void ConnectCallback(IAsyncResult ar)
            {
                SocketUserData socketUserData = (SocketUserData)ar.AsyncState;

                try
                {
                    socketUserData.Socket.EndConnect(ar);
                }
                catch (ObjectDisposedException)
                {
                    return;
                }
                catch (Exception exception)
                {
                    m_Active = false;
                    if (NetworkChannelError != null)
                    {
                        NetworkChannelError(this, NetworkErrorCode.ConnectError, exception.Message);
                        return;
                    }

                    throw;
                }

                m_Active = true;
                lock (m_HeartBeatState)
                {
                    m_HeartBeatState.Reset(true);
                }

                NetworkChannelConnected?.Invoke(this, socketUserData.UserData);

                Receive();
            }
            private void SendCallback(IAsyncResult ar)
            {
                SocketUserData socketUserData = (SocketUserData)ar.AsyncState;
                int            bytesSent      = 0;

                try
                {
                    bytesSent = socketUserData.Socket.EndSend(ar);
                }
                catch (ObjectDisposedException)
                {
                    return;
                }
                catch (Exception exception)
                {
                    m_Active = false;
                    if (NetworkChannelError != null)
                    {
                        NetworkChannelError(this, NetworkErrorCode.SendError, exception.Message);
                        return;
                    }

                    throw;
                }

                if (NetworkChannelSended != null)
                {
                    NetworkChannelSended(this, bytesSent, socketUserData.UserData);
                }
            }
            private void SendCallback(IAsyncResult ar)
            {
                SocketUserData socketUserData = (SocketUserData)ar.AsyncState;
                int bytesSent = 0;
                try
                {
                    bytesSent = socketUserData.Socket.EndSend(ar);
                }


                NetworkChannelSended();
            }