/// <summary>
		/// Obsługa normalnego działania.
		/// </summary>
		/// <param name="client"></param>
		private void HandleClient(Internals.ServerClient client)
		{
			if (DateTime.Now - client.LastAction > this.MaxClientIdleTime)
			{
				client.Send(new Message(MessageType.TimeOut, null));
				client.CloseSocket();
				client.Status = ClientStatus.NotResponding;
				Logger.Info("Client {0}:{1} - connection closed, client is not responding", client.RemoteEndpoint.Address, client.RemoteEndpoint.Port);
			}
			else
			{
				client.Receive();
			}
		}
		/// <summary>
		/// Obsługa sekwencji powitalnej.
		/// </summary>
		/// <param name="client"></param>
		/// <param name="i"></param>
		private void HandleWelcomeSequence(Internals.ServerClient client, ref int i)
		{
			client.Receive();
			if (client.Messages.Count > 0)
			{
				if (client.Messages[0].Type == MessageType.Welcome) //Odebraliśmy wiadomość powitalną
				{
					Messages.ClientWelcome msg;
					try
					{
						msg = new Messages.ClientWelcome(client.Messages[0]);
					}
					catch //Błędna
					{
						client.Send(new Message(MessageType.InvalidSequence, null));
						client.CloseSocket();
						Logger.Info("Client {0}:{1} rejected, reason: invalid welcome sequence", client.RemoteEndpoint.Address, client.RemoteEndpoint.Port);
						this._ClientsCollection.RemoveAt(i--);
						return;
					}
					client.Messages.RemoveAt(0);
					if (msg.Version == this.Version) //Wszystko ok
					{
						client.Send(new Message(MessageType.AllOk, null));
						client.Status = ClientStatus.Ok;
						Logger.Info("Client {0}:{1} - welcome sequence went well", client.RemoteEndpoint.Address, client.RemoteEndpoint.Port);
					}
					else //Niepoprawna wersja
					{
						client.Send(new Message(MessageType.IncompatibleVersion, null));
						client.CloseSocket();
						Logger.Info("Client {0}:{1} rejected, reason: incompatible version", client.RemoteEndpoint.Address, client.RemoteEndpoint.Port);
						this._ClientsCollection.RemoveAt(i--);
					}
				}
				else if (client.Messages[0].Type == MessageType.IncompatibleVersion ||
					client.Messages[0].Type == MessageType.InvalidSequence) //Klient ma inną wersję niż my
				{
					client.CloseSocket();
					Logger.Info("Client {0}:{1} closed the connection, reason: incompatible version", client.RemoteEndpoint.Address, client.RemoteEndpoint.Port);
					this._ClientsCollection.RemoveAt(i--);
				}
				else //Błędna sekwencja ze strony klienta
				{
					client.Send(new Message(MessageType.InvalidSequence, null));
					client.CloseSocket();
					Logger.Info("Client {0}:{1} rejected, reason: invalid welcome sequence", client.RemoteEndpoint.Address, client.RemoteEndpoint.Port);
					this._ClientsCollection.RemoveAt(i--);
				}
			}
		}