Пример технологии производительности сокета

Обновлен: Ноябрь 2007

В этом примере показано использование расширений в классе System.Net.Sockets.Socket для построения серверного приложения, использующего асинхронные сетевые операции ввода-вывода для достижения максимальной производительности.

Дополнительные сведения об использовании примеров см. в следующих разделах:

Построение примера с использованием командной строки

  1. Откройте окно командной строки и перейдите во вложенную папку CS в каталоге AsyncSocketServer. Дополнительные сведения о необходимых параметрах и командной строке SDK см. в разделе Практическое руководство. Задание параметров примера.

  2. В командной строке введите msbuild AsyncSocketServer.sln. Эта команда выполняет построение приложений AsyncSocketServer и AsyncSocketClient.

Построение примера с использованием Visual Studio

  1. Откройте обозреватель Windows и перейдите ко вложенной папке CS в каталоге AsyncSocketServer.

  2. Дважды щелкните значок AsyncSocketServer.sln, чтобы открыть файл в Visual Studio.

  3. В меню Построение выберите команду Построить решение.

Приложения AsyncSocketServer и AsyncSocketClient помещаются в каталоге по умолчанию \bin или \bin\Debug.

Выполнение примера

  1. С помощью окна командной строки перейдите в каталог, содержащий новые исполняемые файлы.

  2. В командной строке введите AsyncSocketServer.exe с соответствующими аргументами для выполнения приложения AsyncSocketServer.

  3. В командной строке введите AsyncSocketClient.exe с соответствующими аргументами командной строки, чтобы выполнить приложение AsyncSocketClient для проверки приложения AsyncSocketServer.

Требования

Для этого примера требуется .NET Framework v3.5, 3.0 SP1, or 2.0 SP1.

Демонстрации

Была добавлена серия новых классов как часть набора расширений класса System.Net.Sockets.Socket, предоставляющего альтернативный шаблон асинхронной модели, который может использоваться специализированными высокопроизводительными приложениями сокетов. Эти усовершенствования были специально разработаны для сетевых серверных приложений, которым нужна высокая производительность. Приложение может использовать расширенный шаблон асинхронной модели исключительно или только в предусмотренных для него областях применения своего приложения (например, при получении большого объема данных).

В примере AsyncSocketServer демонстрируется использование этих новых методов на классе System.Net.Sockets.Socket с помощью эхо-сервера. Сервер отправляет все данные, считанные с клиента, обратно клиенту. Эхо-сервер, реализованный в этом примере, одновременно обрабатывает несколько клиентов (до максимального количества, указанного в качестве аргумента командной строки) и выделяет некоторые ключевые элементы асинхронных методов сокета на основе событий. В примере AsyncSocketServer иллюстрируется создание пула буферов данных многократного использования и контекстных объектовSystem.Net.Sockets.SocketAsyncEventArgs в качестве метода увеличения производительности сервера.

Пример AsyncSocketClient — это простое клиентское приложение, использующееся при тестировании образца приложения AsyncSocketServer. Пример AsyncSocketClient не использует новые расширения класса System.Net.Sockets.Socket.

Для приложения AsyncSocketServer требуется четыре параметра командной строки.

AsyncSocketServer.exe <numConnections> <receiveSize > <addressFamily> <localPortNum>

Параметры имеют следующие значения:

  • numConnections — максимальное количество соединений, которые сервер принимает одновременно.

  • receiveSize — размер буфера в байтах, используемый сервером для каждой операции получения.

  • addressFamily — семейство адресов сокета, которое сервер использует для прослушивания входящих соединений. Поддерживаемые значения — ipv4 и ipv6.

  • localPortNum — локальный порт, к которому будет привязан сервер.

Использование примера для разрешения 500 соединений на IPv4 с размером буфера 1024 байта для каждой операции получения и прослушивания порта 8000, как изложено ниже:

AsyncSocketServer.exe 500 1024 ipv4 8000

Для приложения AsyncSocketClient требуется два параметра командной строки.

AsyncSocketClient.exe <destIPAddress> <destPortNum>

Параметры имеют следующие значения:

  • destIpaddress — IP-адрес назначения для подключения AsyncSocketServer.

  • destPortNum — номер порта назначения AsyncSocketServer.

См. также

Ссылки

System.Net.Sockets.Socket

System.Net.Sockets.SendPacketsElement

System.Net.Sockets.SocketAsyncEventArgs

System.Net.Sockets.SocketAsyncOperation