public void DisconnectAllConnections() { for (int i = 0; i < m_Connections.Count; i++) { NetworkConnection conn = m_Connections[i]; if (conn != null) { conn.Disconnect(); conn.Dispose(); } } }
// ------------------------ server handlers ------------------------ public override void OnServerConnect(NetworkConnection conn) { // numPlayers returns the player count including this one, so ok to be equal if (numPlayers > maxPlayers) { if (LogFilter.logWarn) { Debug.LogWarning("NetworkLobbyManager can't accept new connection [" + conn + "], too many players connected."); } conn.Disconnect(); return; } // cannot join game in progress string loadedSceneName = SceneManager.GetSceneAt(0).name; if (loadedSceneName != m_LobbyScene) { if (LogFilter.logWarn) { Debug.LogWarning("NetworkLobbyManager can't accept new connection [" + conn + "], not in lobby and game already in progress."); } conn.Disconnect(); return; } base.OnServerConnect(conn); // when a new client connects, set all old players as dirty so their current ready state is sent out for (int i = 0; i < lobbySlots.Length; ++i) { if (lobbySlots[i]) { lobbySlots[i].SetDirtyBit(1); } } OnLobbyServerConnect(conn); }
public bool ReconnectToNewHost(string serverIp, int serverPort) { if (!NetworkClient.active) { if (LogFilter.logError) { Debug.LogError("Reconnect - NetworkClient must be active"); } return(false); } if (m_Connection == null) { if (LogFilter.logError) { Debug.LogError("Reconnect - no old connection exists"); } return(false); } if (LogFilter.logInfo) { Debug.Log("NetworkClient Reconnect " + serverIp + ":" + serverPort); } ClientScene.HandleClientDisconnect(m_Connection); ClientScene.ClearLocalPlayers(); m_Connection.Disconnect(); m_Connection = null; m_ClientId = NetworkManager.activeTransport.AddHost(m_HostTopology, m_HostPort, null); string hostnameOrIp = serverIp; m_ServerPort = serverPort; //TODO: relay reconnect /* * if (Match.NetworkMatch.matchSingleton != null) * { * hostnameOrIp = Match.NetworkMatch.matchSingleton.address; * m_ServerPort = Match.NetworkMatch.matchSingleton.port; * }*/ if (UnityEngine.Application.platform == RuntimePlatform.WebGLPlayer) { m_ServerIp = hostnameOrIp; m_AsyncConnect = ConnectState.Resolved; } else if (serverIp.Equals("127.0.0.1") || serverIp.Equals("localhost")) { m_ServerIp = "127.0.0.1"; m_AsyncConnect = ConnectState.Resolved; } else { if (LogFilter.logDebug) { Debug.Log("Async DNS START:" + hostnameOrIp); } m_AsyncConnect = ConnectState.Resolving; Dns.BeginGetHostAddresses(hostnameOrIp, new AsyncCallback(GetHostAddressesCallback), this); } return(true); }