private void DirectKick(NetworkPlayer player, string reason, float delay = 0f) { Thread.Sleep((int)(delay * 1000)); //Convert to milliseconds. ConnectionPacket cP = new ConnectionPacket(true, reason); Packet p = new Packet(Packet.pType.connectionPacket, Packet.sendType.nonbuffered, ENSSerialization.SerializeConnectionPacket(cP)); p.packetOwnerID = -1; p.sendToAll = false; p.serverAuthority = true; SendPacket(player, p); player.netStream.Close(); player.playerConnected = false; SteamServer.EndSession(player.steamID); SteamUser.EndAuthSession(player.steamID); if (connections.Contains(player)) { connections.Remove(player); } Debug.Log("Client<" + player.steamID + "> has been kicked for: " + reason); }
public void StopServer() { if (server != null) { ConnectionPacket cP = new ConnectionPacket(true, "Server Closed."); Packet p = new Packet(Packet.pType.connectionPacket, Packet.sendType.nonbuffered, ENSSerialization.SerializeConnectionPacket(cP)); foreach (NetworkPlayer client in connections) { SendPacket(client, p); //Server Closed Packet. client.tcpClient.Close(); client.tcpClient.Dispose(); } server.Stop(); server = null; if (useSteamworks && !NetTools.isSingleplayer) { SteamInteraction.instance.ShutdownServer(); } UPnP.Shutdown(); } if (udpListener != null) { udpListener.Stop(); udpListener = null; } if (connectionHandler != null) { connectionHandler.Abort(); connectionHandler = null; } if (udpHandler != null) { udpHandler.Abort(); udpHandler = null; } if (GameObject.FindObjectOfType <UnityPacketHandler>() != null) { GameObject.Destroy(GameObject.FindObjectOfType <UnityPacketHandler>().gameObject); } //NetServer.serverInstance = null; connections = new List <NetworkPlayer>(); connectionsByID = new Dictionary <int, NetworkPlayer>(); bufferedPackets = new Dictionary <string, List <Packet> >(); if (NetServer.serverInstance != null && NetServer.serverInstance.myConnection != null) { NetServer.serverInstance.myConnection = null; } NetTools.isServer = false; NetTools.isSingleplayer = false; }