BeardedManStudios.Network.SocketPolicyServer.OnReceive C# (CSharp) Метод

OnReceive() приватный Метод

private OnReceive ( IAsyncResult ar ) : void
ar IAsyncResult
Результат void
		void OnReceive(IAsyncResult ar)
		{
			Request r = (ar.AsyncState as Request);
			Socket socket = r.Socket;
			try
			{
				r.Length += socket.EndReceive(ar);

				// compare incoming data with expected request
				for (int i = 0; i < r.Length; i++)
				{
					if (r.Buffer[i] != request[i])
					{
						// invalid request, close socket
						socket.Close();
						return;
					}
				}

				if (r.Length == request.Length)
				{
					// request complete, send policy
					socket.BeginSend(policy, 0, policy.Length, SocketFlags.None, new AsyncCallback(OnSend), socket);
				}
				else
				{
					// continue reading from socket
					socket.BeginReceive(r.Buffer, r.Length, request.Length - r.Length, SocketFlags.None,
						new AsyncCallback(OnReceive), ar.AsyncState);
				}
			}
			catch
			{
				// if anything goes wrong we stop our connection by closing the socket
				socket.Close();
			}
		}