Sockets client+server with await/async c# 5.0
Формулировка задачи:
Уже долго пытаюсь найти хотя бы какой то пример, но пока безуспешно, поэтому обращаюсь с просьбой к вам.
Проблема такова. Хочу написать простое асинхронное клиент-серверное приложение с банальной передачей байт. Удалось найти и реализовать 2 решения: колбэки и await/async базирующиеся на tcplistener и networkStream. Но это все не то. Пытаюсь написать базируясь на Task, Sockets и async/await без tcplistener и networkStream. Почитал некоторую литературу но необвведите код здесьходимого ответа/примера не нашел.
Знаю, что делается это базируясь на следующем:
но пока ничего не выходит. Даже сервер не могу "собрать" воедино. Прошу помощи.
Листинг программы
- public static Task ConnectAsync(this Socket socket, EndPoint remoteEP)
- {
- return Task.Factory.FromAsync(socket.BeginConnect, socket.EndConnect, remoteEP, null);
- }
Решение задачи: «Sockets client+server with await/async c# 5.0»
textual
Листинг программы
- public async Task<long> Connect(IPAddress ipAddress, int port)
- {
- long result=0;
- _client.Connect(ipAddress, port);
- if (!_client.Connected)
- {
- Console.WriteLine("Can't connect");
- }else
- Console.WriteLine("Connected");
- int i=0;
- while (i < 14)
- {
- result = await StartRecieve(i);
- Console.WriteLine("Иттерация {0} ",i);
- }
- return result;
- }
- public async Task<long> StartRecieve(int i)
- {
- try
- {
- Stopwatch sw = new Stopwatch();
- sw.Start();
- var buffer = new byte[9999999];
- //Console.WriteLine("Картинка под номером {0} сохранена", i);
- int buffer2 = await _client.ReceiveTaskAsync(buffer, 0, buffer.Length).ConfigureAwait(false);
- EncodingImage enc = new EncodingImage();
- enc.EncodingImageForRecievedBuffer(buffer, i);
- sw.Stop();
- long Result = sw.ElapsedMilliseconds;
- return Result;
- }
- catch (Exception ex)
- {
- return 0;
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д