public async Task<List<char>> RequestLettersAsync( int count )
 {
     await SendStringAsync($"Request={count}");
     var bytes = await ReceiveBytesAsync();
     var ser = new Serialization();
     return ser.DeserializeCollectionFromBytes(bytes) as List<char>;
 }
 public async Task SendLettersAsync(Func<char> getLetterFromBag )
 {
     Debug.WriteLine("Sende Buchstaben.");
     var request = (await ReceiveStringAsync()).Split('=');
     if (request.Length != 2) throw new ArgumentException(nameof(request));
     int count;
     var parsed = int.TryParse(request[1], out count);
     if (!parsed) throw new ArgumentException("Fehler beim Parsen");
     var letters = new List<char>();
     for(var i = 1; i <= count; i++)
     {
         letters.Add(getLetterFromBag());
     }
     var ser = new Serialization();
     var bytes = ser.SerializeCollectionToBytes(letters);
     await SendBytesAsync(bytes);
     Debug.WriteLine("Buchstaben gesendet.");
 }
 public async Task SendMovesAsync( Dictionary<Point, char> moves )
 {
     var ser = new Serialization();
     var bytes = ser.SerializeCollectionToBytes(moves);
     await SendBytesAsync(bytes);
 }
 public async Task<Dictionary<Point, char>> ReceiveMovesAsync( )
 {
     var ser = new Serialization();
     var bytes = await ReceiveBytesAsync();
     return ser.DeserializeCollectionFromBytes(bytes) as Dictionary<Point, char>;
 }