My first implementation of a client/server application
Naming


Usually, local variables start with a small letter.


StartListening


If the method is called multiple times, it will throw an exception that the endpoint is already in use. Not very robust.
Task.Run(action) uses a thread from the thread pool. Those threads are usually pooled for short running actions. TaskFactory.StartNew(action, TaskCreationOptions.LongRunning) creates a new thread to run the action in. That is more appropriated for long running tasks.
You should use try / catch or using to ensure that the client will be disposed, even if an error occurs.
You should provide a way to shut down the server - closing the application is IMHO not the right way.


HandleClientData


If the incoming data size is bigger than 1024, only the last chunk is received. You would probably add the chunk to the string: clientData += Encoding.ASCII.GetString(buffer, 0, i);