Socket Класс

Определение

Реализует интерфейс сокетов Berkeley.

public ref class Socket : IDisposable
public class Socket : IDisposable
type Socket = class
    interface IDisposable
Public Class Socket
Implements IDisposable
Наследование
Socket
Реализации

Примеры

В следующем примере показано, как Socket класс можно использовать для отправки данных на HTTP-сервер, печатая ответ ASCII на стандартные выходные данные. Этот пример блокирует вызывающий поток до получения всей страницы.

private static void SendHttpRequest(Uri? uri = null, int port = 80)
{
    uri ??= new Uri("http://example.com");

    // Construct a minimalistic HTTP/1.1 request
    byte[] requestBytes = Encoding.ASCII.GetBytes(@$"GET {uri.AbsoluteUri} HTTP/1.0
Host: {uri.Host}
Connection: Close

");

    // Create and connect a dual-stack socket
    using Socket socket = new Socket(SocketType.Stream, ProtocolType.Tcp);
    socket.Connect(uri.Host, port);

    // Send the request.
    // For the tiny amount of data in this example, the first call to Send() will likely deliver the buffer completely,
    // however this is not guaranteed to happen for larger real-life buffers.
    // The best practice is to iterate until all the data is sent.
    int bytesSent = 0;
    while (bytesSent < requestBytes.Length)
    {
        bytesSent += socket.Send(requestBytes, bytesSent, requestBytes.Length - bytesSent, SocketFlags.None);
    }

    // Do minimalistic buffering assuming ASCII response
    byte[] responseBytes = new byte[256];
    char[] responseChars = new char[256];

    while (true)
    {
        int bytesReceived = socket.Receive(responseBytes);

        // Receiving 0 bytes means EOF has been reached
        if (bytesReceived == 0) break;

        // Convert byteCount bytes to ASCII characters using the 'responseChars' buffer as destination
        int charCount = Encoding.ASCII.GetChars(responseBytes, 0, bytesReceived, responseChars, 0);

        // Print the contents of the 'responseChars' buffer to Console.Out
        Console.Out.Write(responseChars, 0, charCount);
    }
}

Следующий пример демонстрирует тот же сценарий HTTP GET, используя асинхронные API на основе задач, а также переадресацию CancellationToken в асинхронные методы, что делает всю операцию отмененной.

Tip

SocketАсинхронные методы, которые обычно не возвращают CancellationToken значение Task, которое выделяется в куче. Отменяемые перегрузки всегда ValueTaskвозвращаются; их использование помогает сократить выделение в коде высокой производительности.

private static async Task SendHttpRequestAsync(Uri? uri = null, int port = 80, CancellationToken cancellationToken = default)
{
    uri ??= new Uri("http://example.com");

    // Construct a minimalistic HTTP/1.1 request
    byte[] requestBytes = Encoding.ASCII.GetBytes(@$"GET {uri.AbsoluteUri} HTTP/1.1
Host: {uri.Host}
Connection: Close

");

    // Create and connect a dual-stack socket
    using Socket socket = new Socket(SocketType.Stream, ProtocolType.Tcp);
    await socket.ConnectAsync(uri.Host, port, cancellationToken);

    // Send the request.
    // For the tiny amount of data in this example, the first call to SendAsync() will likely deliver the buffer completely,
    // however this is not guaranteed to happen for larger real-life buffers.
    // The best practice is to iterate until all the data is sent.
    int bytesSent = 0;
    while (bytesSent < requestBytes.Length)
    {
        bytesSent += await socket.SendAsync(requestBytes.AsMemory(bytesSent), SocketFlags.None);
    }

    // Do minimalistic buffering assuming ASCII response
    byte[] responseBytes = new byte[256];
    char[] responseChars = new char[256];

    while (true)
    {
        int bytesReceived = await socket.ReceiveAsync(responseBytes, SocketFlags.None, cancellationToken);

        // Receiving 0 bytes means EOF has been reached
        if (bytesReceived == 0) break;

        // Convert byteCount bytes to ASCII characters using the 'responseChars' buffer as destination
        int charCount = Encoding.ASCII.GetChars(responseBytes, 0, bytesReceived, responseChars, 0);

        // Print the contents of the 'responseChars' buffer to Console.Out
        await Console.Out.WriteAsync(responseChars.AsMemory(0, charCount), cancellationToken);
    }
}

Комментарии

Класс 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. После вызова Shutdown выполните метод Close, чтобы освободить все ресурсы, связанные с Socket.

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

Конструкторы

Имя Описание
Socket(AddressFamily, SocketType, ProtocolType)

Инициализирует новый экземпляр класса с помощью указанного семейства адресов, типа сокета Socket и протокола.

Socket(SafeSocketHandle)

Инициализирует новый экземпляр класса для указанного Socket дескриптора сокета.

Socket(SocketInformation)

Инициализирует новый экземпляр Socket класса, используя указанное значение, возвращаемое из DuplicateAndClose(Int32).

Socket(SocketType, ProtocolType)

Инициализирует новый экземпляр класса с помощью указанного типа сокета Socket и протокола. Если операционная система поддерживает IPv6, этот конструктор создает сокет с двумя режимами; в противном случае он создает сокет IPv4.

Свойства

Имя Описание
AddressFamily

Возвращает семейство Socketадресов объекта .

Available

Получает объем данных, полученных из сети и доступных для чтения.

Blocking

Возвращает или задает значение, указывающее, находится ли он Socket в режиме блокировки.

Connected

Возвращает значение, указывающее, Socket подключен ли объект к удаленному узлу по состоянию на последний Send или Receive операцию.

DontFragment

Возвращает или задает значение, указывающее, можно ли Socket фрагментировать диаграммы данных протокола Интернета (IP).

DualMode

Возвращает или задает значение, указывающее, является ли Socket сокет с двумя режимами, используемым как для IPv4, так и для IPv6.

EnableBroadcast

Возвращает или задает Boolean значение, указывающее, может ли Socket отправлять широковещательные пакеты.

ExclusiveAddressUse

Возвращает или задает значение, указывающее, разрешает ли Socket только один процесс привязаться к порту.

Handle

Возвращает дескриптор Socketоперационной системы для .

IsBound

Возвращает значение, указывающее Socket , привязан ли он к конкретному локальному порту.

LingerState

Возвращает или задает значение, указывающее, будет ли Socket задержка закрытия сокета в попытке отправить все ожидающие данные.

LocalEndPoint

Возвращает локальную конечную точку.

MulticastLoopback

Возвращает или задает значение, указывающее, доставляются ли исходящие пакеты многоадресной рассылки в отправляющее приложение.

NoDelay

Возвращает или задает Boolean значение, указывающее, использует ли поток Socket алгоритм Nagle.

OSSupportsIPv4

Указывает, поддерживает ли базовая операционная система и сетевые адаптеры протокол 4 (IPv4).

OSSupportsIPv6

Указывает, поддерживает ли базовая операционная система и сетевые адаптеры протокол 6 (IPv6).

OSSupportsUnixDomainSockets

Указывает, поддерживает ли базовая операционная система сокеты домена Unix.

ProtocolType

Возвращает тип протокола объекта Socket.

ReceiveBufferSize

Возвращает или задает значение, указывающее размер буфера Socketполучения.

ReceiveTimeout

Возвращает или задает значение, указывающее время ожидания синхронного Receive вызова.

RemoteEndPoint

Возвращает удаленную конечную точку.

SafeHandle

SafeSocketHandle Возвращает дескриптор сокета, который инкапсулирует текущий Socket объект.

SendBufferSize

Возвращает или задает значение, указывающее размер буфера Socketотправки.

SendTimeout

Возвращает или задает значение, указывающее время ожидания синхронного Send вызова.

SocketType

Возвращает тип Socketобъекта .

SupportsIPv4
Устаревшие.
Устаревшие.
Устаревшие.

Возвращает значение, указывающее, доступна ли поддержка IPv4 и включена ли на текущем узле.

SupportsIPv6
Устаревшие.
Устаревшие.
Устаревшие.

Возвращает значение, указывающее, поддерживает ли платформа IPv6 для некоторых устаревших Dns элементов.

Ttl

Возвращает или задает значение, указывающее значение времени жизни (TTL) пакетов протокола Интернета (IP), отправляемых Socket.

UseOnlyOverlappedIO
Устаревшие.

Возвращает или задает значение, указывающее, должен ли сокет использовать только режим перекрываемых операций ввода-вывода. В .NET 5+ (включая версии .NET Core), значение всегда false.

Методы

Имя Описание
Accept()

Создает новое для Socket только что созданного подключения.

AcceptAsync()

Принимает входящее подключение.

AcceptAsync(CancellationToken)

Принимает входящее подключение.

AcceptAsync(Socket, CancellationToken)

Принимает входящее подключение.

AcceptAsync(Socket)

Принимает входящее подключение.

AcceptAsync(SocketAsyncEventArgs)

Начинает асинхронную операцию для принятия входящей попытки подключения.

BeginAccept(AsyncCallback, Object)

Начинает асинхронную операцию для принятия входящей попытки подключения.

BeginAccept(Int32, AsyncCallback, Object)

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

BeginAccept(Socket, Int32, AsyncCallback, Object)

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

BeginConnect(EndPoint, AsyncCallback, Object)

Начинает асинхронный запрос подключения к удаленному узлу.

BeginConnect(IPAddress, Int32, AsyncCallback, Object)

Начинает асинхронный запрос подключения к удаленному узлу. Узел задается номером IPAddress порта и номером порта.

BeginConnect(IPAddress[], Int32, AsyncCallback, Object)

Начинает асинхронный запрос подключения к удаленному узлу. Узел указывается массивом IPAddress и номером порта.

BeginConnect(String, Int32, AsyncCallback, Object)

Начинает асинхронный запрос подключения к удаленному узлу. Узел указывается именем узла и номером порта.

BeginDisconnect(Boolean, AsyncCallback, Object)

Начинает асинхронный запрос на отключение от удаленной конечной точки.

BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

Начинает асинхронно получать данные из подключенного Socket.

BeginReceive(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

Начинает асинхронно получать данные из подключенного Socket.

BeginReceive(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

Начинает асинхронно получать данные из подключенного Socket.

BeginReceive(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

Начинает асинхронно получать данные из подключенного Socket.

BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)

Начинает асинхронно получать данные с указанного сетевого устройства.

BeginReceiveMessageFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)

Начинает асинхронно получать указанное количество байтов данных в указанное расположение буфера данных, используя указанное SocketFlagsзначение, и сохраняет сведения о конечной точке и пакете.

BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

Асинхронно отправляет данные в подключенное Socket.

BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

Асинхронно отправляет данные в подключенное Socket.

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

Асинхронно отправляет данные в подключенное Socket.

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

Асинхронно отправляет данные в подключенное Socket.

BeginSendFile(String, AsyncCallback, Object)

Отправляет файл fileName в подключенный Socket объект с помощью флага UseDefaultWorkerThread .

BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object)

Отправляет файл и буферы данных асинхронно в подключенный Socket объект.

BeginSendTo(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)

Отправляет данные асинхронно на конкретный удаленный узел.

Bind(EndPoint)

Связывает объект Socket с локальной конечной точкой.

CancelConnectAsync(SocketAsyncEventArgs)

Отменяет асинхронный запрос для подключения к удаленному узлу.

Close()

Socket Закрывает подключение и освобождает все связанные ресурсы.

Close(Int32)

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

Connect(EndPoint)

Устанавливает подключение к удаленному узлу.

Connect(IPAddress, Int32)

Устанавливает подключение к удаленному узлу. Узел указывается IP-адресом и номером порта.

Connect(IPAddress[], Int32)

Устанавливает подключение к удаленному узлу. Узел указывается массивом IP-адресов и номером порта.

Connect(String, Int32)

Устанавливает подключение к удаленному узлу. Узел указывается именем узла и номером порта.

ConnectAsync(EndPoint, CancellationToken)

Устанавливает подключение к удаленному узлу.

ConnectAsync(EndPoint)

Устанавливает подключение к удаленному узлу.

ConnectAsync(IPAddress, Int32, CancellationToken)

Устанавливает подключение к удаленному узлу.

ConnectAsync(IPAddress, Int32)

Устанавливает подключение к удаленному узлу.

ConnectAsync(IPAddress[], Int32, CancellationToken)

Устанавливает подключение к удаленному узлу.

ConnectAsync(IPAddress[], Int32)

Устанавливает подключение к удаленному узлу.

ConnectAsync(SocketAsyncEventArgs)

Начинает асинхронный запрос подключения к удаленному узлу.

ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs, ConnectAlgorithm)

Реализует интерфейс сокетов Berkeley.

ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)

Начинает асинхронный запрос подключения к удаленному узлу.

ConnectAsync(String, Int32, CancellationToken)

Устанавливает подключение к удаленному узлу.

ConnectAsync(String, Int32)

Устанавливает подключение к удаленному узлу.

Disconnect(Boolean)

Закрывает подключение сокета и позволяет повторно использовать сокет.

DisconnectAsync(Boolean, CancellationToken)

Отключает подключенный сокет от удаленного узла.

DisconnectAsync(SocketAsyncEventArgs)

Начинает асинхронный запрос на отключение от удаленной конечной точки.

Dispose()

Освобождает все ресурсы, используемые текущим экземпляром класса Socket.

Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые Socketи при необходимости удаляет управляемые ресурсы.

DuplicateAndClose(Int32)

Дублирует ссылку на сокет для целевого процесса и закрывает сокет для этого процесса.

EndAccept(Byte[], IAsyncResult)

Асинхронно принимает входящие попытки подключения и создает новый Socket объект для обработки связи с удаленным узлом. Этот метод возвращает буфер, содержащий исходные данные, передаваемые.

EndAccept(Byte[], Int32, IAsyncResult)

Асинхронно принимает входящие попытки подключения и создает новый Socket объект для обработки связи с удаленным узлом. Этот метод возвращает буфер, содержащий исходные данные и количество передаваемых байтов.

EndAccept(IAsyncResult)

Асинхронно принимает входящую попытку подключения и создает новую Socket для обработки связи с удаленным узлом.

EndConnect(IAsyncResult)

Завершает ожидающий асинхронный запрос на подключение.

EndDisconnect(IAsyncResult)

Завершает ожидающий асинхронный запрос на отключение.

EndReceive(IAsyncResult, SocketError)

Завершает ожидающий асинхронное чтение.

EndReceive(IAsyncResult)

Завершает ожидающий асинхронное чтение.

EndReceiveFrom(IAsyncResult, EndPoint)

Завершает ожидание асинхронного чтения из определенной конечной точки.

EndReceiveMessageFrom(IAsyncResult, SocketFlags, EndPoint, IPPacketInformation)

Завершает ожидание асинхронного чтения из определенной конечной точки. Этот метод также показывает больше сведений о пакете, чем EndReceiveFrom(IAsyncResult, EndPoint).

EndSend(IAsyncResult, SocketError)

Завершает ожидающий асинхронный отправку.

EndSend(IAsyncResult)

Завершает ожидающий асинхронный отправку.

EndSendFile(IAsyncResult)

Завершает ожидающий асинхронный отправку файла.

EndSendTo(IAsyncResult)

Завершает ожидание асинхронной отправки в определенное расположение.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
Finalize()

Освобождает ресурсы, используемые классом Socket .

GetHashCode()

Возвращает хэш-значение для экземпляра Socket .

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetRawSocketOption(Int32, Int32, Span<Byte>)

Возвращает значение параметра сокета с помощью идентификаторов и идентификаторов имен для конкретной платформы.

GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

Возвращает указанный Socket параметр параметра, представленный в виде массива байтов.

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

Возвращает значение указанного Socket параметра в массиве.

GetSocketOption(SocketOptionLevel, SocketOptionName)

Возвращает значение указанного Socket параметра, представленное как объект.

GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
IOControl(Int32, Byte[], Byte[])

Задает низкоуровневые режимы работы для Socket использования числовых кодов управления.

IOControl(IOControlCode, Byte[], Byte[])

Задает низкоуровневые режимы работы для перечисленияSocket, IOControlCode чтобы указать коды элементов управления.

Listen()

Помещает его Socket в состояние прослушивания.

Listen(Int32)

Помещает его Socket в состояние прослушивания.

MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
Poll(Int32, SelectMode)

Определяет состояние Socketобъекта .

Poll(TimeSpan, SelectMode)

Определяет состояние Socketобъекта .

Receive(Byte[], Int32, Int32, SocketFlags, SocketError)

Получает данные из привязки Socket в буфер получения, используя указанный SocketFlags.

Receive(Byte[], Int32, Int32, SocketFlags)

Получает указанное число байтов из привязки Socket в указанное положение смещения буфера получения с помощью указанного значения SocketFlags.

Receive(Byte[], Int32, SocketFlags)

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

Receive(Byte[], SocketFlags)

Получает данные из привязки Socket в буфер получения, используя указанный SocketFlags.

Receive(Byte[])

Получает данные из привязанного Socket к буферу получения.

Receive(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

Получает данные из привязки Socket в список буферов получения, используя указанный SocketFlagsпараметр.

Receive(IList<ArraySegment<Byte>>, SocketFlags)

Получает данные из привязки Socket в список буферов получения, используя указанный SocketFlagsпараметр.

Receive(IList<ArraySegment<Byte>>)

Получает данные из привязанного Socket списка буферов получения.

Receive(Span<Byte>, SocketFlags, SocketError)

Получает данные из привязки Socket в буфер получения, используя указанный SocketFlags.

Receive(Span<Byte>, SocketFlags)

Получает данные из привязки Socket в буфер получения, используя указанный SocketFlags.

Receive(Span<Byte>)

Получает данные из привязанного Socket к буферу получения.

ReceiveAsync(ArraySegment<Byte>, SocketFlags)

Получает данные из подключенного сокета.

ReceiveAsync(ArraySegment<Byte>)

Получает данные из подключенного сокета.

ReceiveAsync(IList<ArraySegment<Byte>>, SocketFlags)

Получает данные из подключенного сокета.

ReceiveAsync(IList<ArraySegment<Byte>>)

Получает данные из подключенного сокета.

ReceiveAsync(Memory<Byte>, CancellationToken)

Получает данные из подключенного сокета.

ReceiveAsync(Memory<Byte>, SocketFlags, CancellationToken)

Получает данные из подключенного сокета.

ReceiveAsync(SocketAsyncEventArgs)

Начинает асинхронный запрос на получение данных из подключенного Socket объекта.

ReceiveFrom(Byte[], EndPoint)

Получает диаграмму данных в буфер данных и сохраняет конечную точку.

ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)

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

ReceiveFrom(Byte[], Int32, SocketFlags, EndPoint)

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

ReceiveFrom(Byte[], SocketFlags, EndPoint)

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

ReceiveFrom(Span<Byte>, EndPoint)

Получает диаграмму данных в буфер данных и сохраняет конечную точку.

ReceiveFrom(Span<Byte>, SocketFlags, EndPoint)

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

ReceiveFrom(Span<Byte>, SocketFlags, SocketAddress)

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

ReceiveFromAsync(ArraySegment<Byte>, EndPoint)

Получает данные и возвращает конечную точку узла отправки.

ReceiveFromAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

Получает данные и возвращает конечную точку узла отправки.

ReceiveFromAsync(Memory<Byte>, EndPoint, CancellationToken)

Получает данные и возвращает конечную точку узла отправки.

ReceiveFromAsync(Memory<Byte>, SocketFlags, EndPoint, CancellationToken)

Получает данные и возвращает конечную точку узла отправки.

ReceiveFromAsync(Memory<Byte>, SocketFlags, SocketAddress, CancellationToken)

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

ReceiveFromAsync(SocketAsyncEventArgs)

Начинает асинхронно получать данные с указанного сетевого устройства.

ReceiveMessageFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, IPPacketInformation)

Получает указанное количество байтов данных в указанное расположение буфера данных, используя указанное SocketFlagsзначение, а также сохраняет сведения о конечной точке и пакете.

ReceiveMessageFrom(Span<Byte>, SocketFlags, EndPoint, IPPacketInformation)

Получает указанное количество байтов данных в указанное расположение буфера данных, используя указанное socketFlagsзначение, а также сохраняет сведения о конечной точке и пакете.

ReceiveMessageFromAsync(ArraySegment<Byte>, EndPoint)

Получает данные и возвращает дополнительные сведения об отправителе сообщения.

ReceiveMessageFromAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

Получает данные и возвращает дополнительные сведения об отправителе сообщения.

ReceiveMessageFromAsync(Memory<Byte>, EndPoint, CancellationToken)

Получает данные и возвращает дополнительные сведения об отправителе сообщения.

ReceiveMessageFromAsync(Memory<Byte>, SocketFlags, EndPoint, CancellationToken)

Получает данные и возвращает дополнительные сведения об отправителе сообщения.

ReceiveMessageFromAsync(SocketAsyncEventArgs)

Начинает асинхронно получать указанное количество байтов данных в указанное расположение в буфере данных, используя указанное SocketFlagsзначение, и сохраняет сведения о конечной точке и пакете.

Select(IList, IList, IList, Int32)

Определяет состояние одного или нескольких сокетов.

Select(IList, IList, IList, TimeSpan)

Определяет состояние одного или нескольких сокетов.

Send(Byte[], Int32, Int32, SocketFlags, SocketError)

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

Send(Byte[], Int32, Int32, SocketFlags)

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

Send(Byte[], Int32, SocketFlags)

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

Send(Byte[], SocketFlags)

Отправляет данные в подключенное Socket с помощью указанного SocketFlags.

Send(Byte[])

Отправляет данные в подключенное Socket.

Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

Отправляет набор буферов в списке подключенным Socketс помощью указанного SocketFlags.

Send(IList<ArraySegment<Byte>>, SocketFlags)

Отправляет набор буферов в списке подключенным Socketс помощью указанного SocketFlags.

Send(IList<ArraySegment<Byte>>)

Отправляет набор буферов в списке подключенным Socket.

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

Отправляет данные в подключенное Socket с помощью указанного SocketFlags.

Send(ReadOnlySpan<Byte>, SocketFlags)

Отправляет данные в подключенное Socket с помощью указанного SocketFlags.

Send(ReadOnlySpan<Byte>)

Отправляет данные в подключенное Socket.

SendAsync(ArraySegment<Byte>, SocketFlags)

Отправляет данные в подключенном сокете.

SendAsync(ArraySegment<Byte>)

Отправляет данные в подключенном сокете.

SendAsync(IList<ArraySegment<Byte>>, SocketFlags)

Отправляет данные в подключенном сокете.

SendAsync(IList<ArraySegment<Byte>>)

Отправляет данные в подключенном сокете.

SendAsync(ReadOnlyMemory<Byte>, CancellationToken)

Отправляет данные в подключенном сокете.

SendAsync(ReadOnlyMemory<Byte>, SocketFlags, CancellationToken)

Отправляет данные в подключенном сокете.

SendAsync(SocketAsyncEventArgs)

Отправляет данные асинхронно в подключенный Socket объект.

SendFile(String, Byte[], Byte[], TransmitFileOptions)

Отправляет файл fileName и буферы данных в подключенный Socket объект с помощью указанного TransmitFileOptions значения.

SendFile(String, ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, TransmitFileOptions)

Отправляет файл fileName и буферы данных в подключенный Socket объект с помощью указанного TransmitFileOptions значения.

SendFile(String)

Отправляет файл fileName в подключенный Socket объект с флагом передачи UseDefaultWorkerThread .

SendFileAsync(String, CancellationToken)

Отправляет файл fileName в подключенный Socket объект.

SendFileAsync(String, ReadOnlyMemory<Byte>, ReadOnlyMemory<Byte>, TransmitFileOptions, CancellationToken)

Отправляет файл fileName и буферы данных в подключенный Socket объект с помощью указанного TransmitFileOptions значения.

SendPacketsAsync(SocketAsyncEventArgs)

Отправляет коллекцию файлов или буферов данных памяти асинхронно в подключенный Socket объект.

SendTo(Byte[], EndPoint)

Отправляет данные в указанную конечную точку.

SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)

Отправляет указанное число байтов данных в указанную конечную точку, начиная с указанного расположения в буфере и используя указанный SocketFlags.

SendTo(Byte[], Int32, SocketFlags, EndPoint)

Отправляет указанное число байтов данных в указанную конечную точку с помощью указанной SocketFlags.

SendTo(Byte[], SocketFlags, EndPoint)

Отправляет данные в определенную конечную точку с помощью указанной SocketFlags.

SendTo(ReadOnlySpan<Byte>, EndPoint)

Отправляет данные в указанную конечную точку.

SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)

Отправляет данные в определенную конечную точку с помощью указанной SocketFlags.

SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)

Отправляет данные в определенную конечную точку с помощью указанной SocketFlags.

SendToAsync(ArraySegment<Byte>, EndPoint)

Отправляет данные на указанный удаленный узел.

SendToAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

Отправляет данные на указанный удаленный узел.

SendToAsync(ReadOnlyMemory<Byte>, EndPoint, CancellationToken)

Отправляет данные на указанный удаленный узел.

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, EndPoint, CancellationToken)

Отправляет данные на указанный удаленный узел.

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, SocketAddress, CancellationToken)

Отправляет данные в определенную конечную точку с помощью указанной SocketFlags.

SendToAsync(SocketAsyncEventArgs)

Отправляет данные асинхронно на конкретный удаленный узел.

SetIPProtectionLevel(IPProtectionLevel)

Задает уровень защиты IP-адресов в сокете.

SetRawSocketOption(Int32, Int32, ReadOnlySpan<Byte>)

Задает значение параметра сокета с помощью идентификаторов и идентификаторов имен для конкретной платформы.

SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean)

Задает указанный Socket параметр указанному Boolean значению.

SetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

Задает указанный Socket параметр указанному значению, представленному в виде массива байтов.

SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

Задает указанный Socket параметр для указанного целочисленного значения.

SetSocketOption(SocketOptionLevel, SocketOptionName, Object)

Задает указанный Socket параметр указанному значению, представленному как объект.

Shutdown(SocketShutdown)

Отключает отправку и получение в объекте Socket.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

Имя Описание
IDisposable.Dispose()

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Освобождает все ресурсы, используемые параметром Socket.

Методы расширения

Имя Описание
AcceptAsync(Socket, Socket)

Выполняет асинхронную операцию для принятия входящей попытки подключения к сокету.

AcceptAsync(Socket)

Выполняет асинхронную операцию для принятия входящей попытки подключения к сокету.

ConnectAsync(Socket, EndPoint, CancellationToken)

Устанавливает подключение к удаленному узлу.

ConnectAsync(Socket, EndPoint)

Устанавливает подключение к удаленному узлу.

ConnectAsync(Socket, IPAddress, Int32, CancellationToken)

Устанавливает подключение к удаленному узлу, который указывается IP-адресом и номером порта.

ConnectAsync(Socket, IPAddress, Int32)

Устанавливает подключение к удаленному узлу. Узел указывается IP-адресом и номером порта.

ConnectAsync(Socket, IPAddress[], Int32, CancellationToken)

Устанавливает подключение к удаленному узлу, который указывается массивом IP-адресов и номером порта.

ConnectAsync(Socket, IPAddress[], Int32)

Устанавливает подключение к удаленному узлу. Узел указывается массивом IP-адресов и номером порта.

ConnectAsync(Socket, String, Int32, CancellationToken)

Устанавливает подключение к удаленному узлу, которое указывается именем узла и номером порта.

ConnectAsync(Socket, String, Int32)

Устанавливает подключение к удаленному узлу. Узел указывается именем узла и номером порта.

ReceiveAsync(Socket, ArraySegment<Byte>, SocketFlags)

Получает данные из подключенного сокета.

ReceiveAsync(Socket, IList<ArraySegment<Byte>>, SocketFlags)

Получает данные из подключенного сокета.

ReceiveAsync(Socket, Memory<Byte>, SocketFlags, CancellationToken)

Получает данные из подключенного сокета.

ReceiveFromAsync(Socket, ArraySegment<Byte>, SocketFlags, EndPoint)

Получает данные из указанного сетевого устройства.

ReceiveMessageFromAsync(Socket, ArraySegment<Byte>, SocketFlags, EndPoint)

Получает указанное количество байтов данных в указанное расположение буфера данных, используя указанное SocketFlagsзначение, а также сохраняет сведения о конечной точке и пакете.

SendAsync(Socket, ArraySegment<Byte>, SocketFlags)

Отправляет данные в подключенный сокет.

SendAsync(Socket, IList<ArraySegment<Byte>>, SocketFlags)

Отправляет данные в подключенный сокет.

SendAsync(Socket, ReadOnlyMemory<Byte>, SocketFlags, CancellationToken)

Отправляет данные в подключенный сокет.

SendToAsync(Socket, ArraySegment<Byte>, SocketFlags, EndPoint)

Отправляет данные асинхронно на конкретный удаленный узел.

Применяется к

Потокобезопасность

Безопасно выполнять отправку и операцию получения одновременно на Socket экземпляре, но не рекомендуется одновременно выдавать несколько вызовов отправки или нескольких вызовов приема одновременно. В зависимости от базовой реализации платформы это может привести к непреднамеренным переключениям данных для отправки или получения больших или нескольких буферов.

См. также раздел