//
// Copyright (c) 2002
// Ronald Kevin Burton
//
// Z poniższym kodem nie jest związana żadna gwarancja poprawności działania.
// Program został dołączony do książki ".NET CLR. Księga eksperta" w celu
// ilustracji koncepcji i zasad przedstawionych w tej książce. Program może być 
// używany na własne ryzyko.
//
// Przyznaje się prawo do użycia lub kopiowania tego oprogramowania do dowolnego celu
// bez konieczności ponoszenia żadnych opłat pod warunkiem, że powyższe uwagi zostaną 
// zachowane we wszystkich kopiach. Przyznaje się także prawo do modyfikacji kodu
// i dystrybucji zmodyfikowanego kodu pod warunkiem zachowania powyższych uwag
// oraz dołączenia informacji mówiącej o modyfikacji kodu.
//
// 
using System;
using System.Net;
using System.Text;
using System.Net.Sockets;

class Listener
{

	public static void Main()
	{
		Console.WriteLine("Gotowy do przetwarzania żądań...");
		ProcessRequests();	
	}

	public static void ProcessRequests()
	{
		UdpClient listener = new UdpClient(2001);
		IPEndPoint remoteEp = new IPEndPoint(IPAddress.Any, 2001);

		bool continueProcessing = true;
		while(continueProcessing)
		{
			byte[] buffer = listener.Receive(ref remoteEp);
			
			string message = Encoding.ASCII.GetString(buffer, 0, buffer.Length);
			if(message == "quit")
			{
				continueProcessing = false;
				break;
			}
			else
			{
				Console.WriteLine("Otrzymana wiadomość to " + message);
			}
		}		

		listener.Close();
	}
}
