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(); } } }
public override void Disconnect() { if (IsConnected) { NetLogger.LogInfo(logTag, "Disconnecting..."); socket.BeginDisconnect(false, OnDisconnected, socket); } else { NetLogger.LogWarning(logTag, "Already disconnected."); } }
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)); }
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."); } }
protected override void DisconnectedByRemote(Socket socket) { NetLogger.LogWarning(logTag, "Disconnected by remote."); Disconnect(); }