sockets client+server with await/async c# 5.0

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

Ответить
123456789igor
Сообщения: 7
Зарегистрирован: 27 фев 2013, 23:03

01 май 2014, 05:36

Уже долго пытаюсь найти хотя бы какой то пример, но пока безуспешно, поэтому обращаюсь с просьбой к вам.
Проблема такова. Хочу написать простое асинхронное клиент-серверное приложение с банальной передачей байт. Удалось найти и реализовать 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);
            }
но пока ничего не выходит. Даже сервер не могу "собрать" воедино. Прошу помощи.
123456789igor
Сообщения: 7
Зарегистрирован: 27 фев 2013, 23:03

01 май 2014, 16:54

Получилось подключиться, а вот с передачей пока никак.

Код: Выделить всё

private readonly Socket _server;
        public ServerSocket(IPAddress ipAddress, int port)
        {
            _server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            _server.Bind(new IPEndPoint(ipAddress, port));
            _server.Listen(20);
            Console.WriteLine("Wait connection");
            Accept();
        }
        private async void Accept()
        {
            for (; ; )
            {
                var socket = await Task.Factory.FromAsync<Socket>(_server.BeginAccept, _server.EndAccept, true);
                Console.WriteLine("Connected");
            }
        }
Ответить