Socket.DuplicateAndClose(Int32) Метод

Определение

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

[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public System.Net.Sockets.SocketInformation DuplicateAndClose (int targetProcessId);
public System.Net.Sockets.SocketInformation DuplicateAndClose (int targetProcessId);

Параметры

targetProcessId
Int32

Идентификатор конечного процесса, в котором создается дубликат ссылки сокета.

Возвращаемое значение

Ссылка сокета, передаваемая в конечный процесс.

Атрибуты

Исключения

.NET Core в любой ОС и .NET 5+ только в ОС под управлением Unix: текущая платформа не поддерживается.

Параметр targetProcessID не является допустимым идентификатором процесса.

-или-

Дубликат ссылки сокета не создан.

Комментарии

Целевой процесс должен использовать Socket(SocketInformation) конструктор для создания повторяющегося экземпляра сокета.

Не вызывайте Socket(SocketInformation) конструктор несколько раз, используя один и тот же массив байтов в аргументе SocketInformation в каждом вызове. В этом случае у вас будет несколько управляемых Socket экземпляров с одинаковым базовым сокетом, что настоятельно рекомендуется.

На платформа .NET Framework, если процесс создания сокета использует асинхронные методы, процесс должен сначала задать UseOnlyOverlappedIO для свойства значение true. В противном случае асинхронный метод привязывает сокет к порту завершения ввода-вывода процесса создания, что может привести к возникновению в целевом ArgumentNullException процессе.

В .NET Core 1.0-3.1 этот метод не поддерживается.

В .NET 5 и более поздних версий DuplicateAndClose(Int32) имеет ограниченную поддержку в Windows. В отличие от платформа .NET Framework, UseOnlyOverlappedIO свойство является NOP, поэтому процесс создания сокета никогда не должен вызывать асинхронные методы в сокете. Вызов асинхронной операции всегда привязывает ее к порту завершения ввода-вывода процесса создания, что может привести к возникновению в целевом ArgumentNullException процессе.

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

Өнім Нұсқалар
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1