Sockets client+server with await/async c# 5.0

Узнай цену своей работы

Формулировка задачи:

Уже долго пытаюсь найти хотя бы какой то пример, но пока безуспешно, поэтому обращаюсь с просьбой к вам. Проблема такова. Хочу написать простое асинхронное клиент-серверное приложение с банальной передачей байт. Удалось найти и реализовать 2 решения: колбэки и await/async базирующиеся на tcplistener и networkStream. Но это все не то. Пытаюсь написать базируясь на Task, Sockets и async/await без tcplistener и networkStream. Почитал некоторую литературу но необвведите код здесьходимого ответа/примера не нашел. Знаю, что делается это базируясь на следующем:
Листинг программы
  1. public static Task ConnectAsync(this Socket socket, EndPoint remoteEP)
  2. {
  3. return Task.Factory.FromAsync(socket.BeginConnect, socket.EndConnect, remoteEP, null);
  4. }
но пока ничего не выходит. Даже сервер не могу "собрать" воедино. Прошу помощи.

Решение задачи: «Sockets client+server with await/async c# 5.0»

textual
Листинг программы
  1. public async Task<long> Connect(IPAddress ipAddress, int port)
  2.         {
  3.             long result=0;
  4.             _client.Connect(ipAddress, port);
  5.             if (!_client.Connected)
  6.             {
  7.                 Console.WriteLine("Can't connect");
  8.             }else
  9.             Console.WriteLine("Connected");
  10.             int i=0;
  11.             while (i < 14)
  12.             {
  13.                 result = await StartRecieve(i);
  14.                 Console.WriteLine("Иттерация {0} ",i);
  15.             }
  16.             return result;
  17.         }
  18.         public async Task<long> StartRecieve(int i)
  19.         {
  20.             try
  21.             {
  22.                 Stopwatch sw = new Stopwatch();
  23.                 sw.Start();
  24.                 var buffer = new byte[9999999];
  25.                 //Console.WriteLine("Картинка под номером {0} сохранена", i);
  26.                 int buffer2 = await _client.ReceiveTaskAsync(buffer, 0, buffer.Length).ConfigureAwait(false);
  27.                 EncodingImage enc = new EncodingImage();
  28.                 enc.EncodingImageForRecievedBuffer(buffer, i);
  29.                 sw.Stop();
  30.                 long Result = sw.ElapsedMilliseconds;
  31.                 return Result;
  32.             }
  33.             catch (Exception ex)
  34.             {
  35.                 return 0;
  36.             }
  37.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.571 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы