Класс System.Net.Sockets.Socket

В этой статье приводятся дополнительные замечания к справочной документации по этому API.

Класс Socket предоставляет широкий набор методов и свойств для сетевого взаимодействия. Класс Socket позволяет выполнять синхронную и асинхронную передачу данных с помощью любого из протоколов связи, перечисленных в ProtocolType перечислении.

Класс Socket следует шаблону именования .NET для асинхронных методов. Например, синхронный Receive метод соответствует асинхронным ReceiveAsync вариантам.

Используйте следующие методы для синхронного режима операций:

  • Если используется протокол, ориентированный на подключение, например TCP, сервер может прослушивать подключения с помощью Listen метода. Метод Accept обрабатывает все входящие запросы на подключение и возвращает Socket значение, которое можно использовать для обмена данными с удаленным узлом. Используйте это значение, возвращаемое Socket для вызова Send или Receive метода. Bind Вызовите метод перед вызовом Listen метода, если вы хотите указать локальный IP-адрес и номер порта. Используйте номер порта в нуле, если требуется, чтобы базовый поставщик услуг назначит бесплатный порт. Если вы хотите подключиться к узлу прослушивания, вызовите Connect метод. Для обмена данными Send вызовите или Receive метод.
  • Если вы используете протокол без подключения, например UDP, вам не нужно прослушивать подключения вообще. ReceiveFrom Вызовите метод, чтобы принять все входящие диаграммы данных. SendTo Используйте метод для отправки диаграмм данных удаленному узлу.

Чтобы асинхронно обрабатывать обмен данными, используйте следующие методы:

  • Если вы используете протокол, ориентированный на подключение, например TCP, используйте ConnectAsync для подключения к узлу прослушивания. Асинхронно используйте SendAsync или ReceiveAsync обмен данными. Входящие запросы на подключение можно обрабатывать с помощью AcceptAsync.
  • Если вы используете протокол без подключения, например UDP, можно использовать SendToAsync для отправки данных и ReceiveFromAsyncполучения диаграмм данных.

При выполнении нескольких асинхронных операций в сокете они не обязательно выполняются в том порядке, в котором они запускаются.

Завершив отправку и получение данных, используйте Shutdown метод для отключения Socket. После вызова вызовите ShutdownClose метод, чтобы освободить все ресурсы, связанные с нимSocket.

Класс Socket позволяет настроить Socket метод с помощью SetSocketOption метода. Получите эти параметры с помощью GetSocketOption метода.