public void Close() { NetStreamBinary.Close(); Client.Close(); Client = null; BatchStream.Close(); _client.ConnectionState = ConnectionState.Disconnected; }
public void Close() { BatchStream.BaseStream.SetLength(0); NetStreamBinary.Close(); Client.Close(); Client = null; NetStreamBinary = null; NetStream = null; }
public void Check() { if (!Connected) { if (_client.ConnectionState == ConnectionState.Connecting && (DateTime.Now - ConnectionTime).Seconds > 4) { _client.ConnectionState = ConnectionState.Timeout; } return; } while (Client.Available != 0) { var reader = new BinaryWrapper(NetStream); while (true) { byte packetType = reader.ReadByte(); if (packetType == PacketTypeBase.EndOfMessage) { break; } else if (packetType == ClientPacketTypeBase.SpawnAck) { int count = reader.ReadInt(); _client.Players.SetPlayers(count); _client.PlayerIndex = reader.ReadInt(); _client.Players[_client.PlayerIndex].Name = _client.Name; _client.Spawned(); } else if (packetType == ClientPacketTypeBase.ConnectionAck) { _client.Connected(); } else if (packetType == ClientPacketTypeBase.PlayerData) { int index = reader.ReadByte(); byte bits = reader.ReadByte(); var player = _client.GetPlayer(index); if ((bits & ClientPacketTypeBase.PlayerDataBits.ActiveBit) != 0) { player.Active = reader.ReadBoolean(); } if ((bits & ClientPacketTypeBase.PlayerDataBits.NameBit) != 0) { player.Name = StringWriter.Read(reader); } if (player.Active == false) { _client.Players.Remove(player); } _client.OnPlayerDataReceived(player, reader); } OnPacketReceived(packetType, reader, (IPEndPoint)Client.Client.RemoteEndPoint); } } if (BatchStream.BaseStream.Length != 0) { NetStreamBinary.Write(_memory.ToArray(), 0, (int)_memory.Length); _memory.SetLength(0); } }