Exemplo n.º 1
0
        public void DoUpdate(float deltaTime, float unscaleDeltaTime)
        {
            if (m_ClientSocket == null)
            {
                return;
            }
            ClientNetworkStatus curStatus = Status;

            if (m_PreStatus != curStatus)
            {
                if (curStatus == ClientNetworkStatus.Connecting)
                {
                    OnConnectingCallback?.Invoke();
                }
                else if (curStatus == ClientNetworkStatus.Connected)
                {
                    OnConnectedCallback?.Invoke();
                }
                else if (curStatus == ClientNetworkStatus.Disconnecting)
                {
                    OnDisconnectingCallback?.Invoke();
                }
                else if (curStatus == ClientNetworkStatus.Disconnected)
                {
                    OnDisconnectedCallback?.Invoke();
                }

                m_PreStatus = curStatus;
            }

            if (curStatus == ClientNetworkStatus.Connected)
            {
                lock (m_MessageLocker)
                {
                    foreach (var bytes in m_Messages)
                    {
                        int id = BitConverter.ToInt32(bytes, 0);
                        if (m_MessagHandlerDic.TryGetValue(id, out var callback))
                        {
                            byte[] contentBytes = new byte[0];
                            if (bytes.Length > sizeof(int))
                            {
                                contentBytes = new byte[bytes.Length - sizeof(int)];
                                Array.Copy(bytes, sizeof(int), contentBytes, 0, contentBytes.Length);
                            }
                            callback(contentBytes);
                        }
                        else
                        {
                            NetLogger.LogWarning(NetUtil.CLIENT_LOG_TAG, $"the handler of  id({id}) is not found");
                        }
                    }

                    m_Messages.Clear();
                }
            }
        }
Exemplo n.º 2
0
 public override void Disconnect()
 {
     if (IsConnected)
     {
         NetLogger.LogInfo(logTag, "Disconnecting...");
         socket.BeginDisconnect(false, OnDisconnected, socket);
     }
     else
     {
         NetLogger.LogWarning(logTag, "Already disconnected.");
     }
 }
Exemplo n.º 3
0
        protected override void DisconnectedByRemote(Socket socket)
        {
            try
            {
                IPEndPoint clientEndPoint = (IPEndPoint)socket.RemoteEndPoint;

                NetLogger.LogInfo(logTag, $"Client disconnected ({clientEndPoint.Address}:{clientEndPoint.Port})");
            }
            catch (Exception)
            {
                NetLogger.LogWarning(logTag, "TcpServerSocket::DisconnectedByRemote->Client disconnected.");
            }

            socket.Close();
            clients.Remove(socket);
            OnClientDisconnect?.Invoke(this, new TcpNetworkEventArgs(socket));
        }
Exemplo n.º 4
0
        public override void Disconnect()
        {
            foreach (var client in clients)
            {
                client.BeginDisconnect(false, OnClientDisconnected, client);
            }

            if (IsConnected)
            {
                NetLogger.LogInfo(logTag, "Stopped listening.");

                IsConnected = false;
                socket.Close();
                TriggerOnDisconnect();
            }
            else
            {
                NetLogger.LogWarning(logTag, "Already disconnected.");
            }
        }
Exemplo n.º 5
0
        protected override void DisconnectedByRemote(Socket socket)
        {
            NetLogger.LogWarning(logTag, "Disconnected by remote.");

            Disconnect();
        }