Socket.DuplicateAndClose(Int32) Método

Definición

Duplica la referencia del socket para el proceso de destino y cierra el socket para este proceso.

public:
 System::Net::Sockets::SocketInformation DuplicateAndClose(int targetProcessId);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public System.Net.Sockets.SocketInformation DuplicateAndClose (int targetProcessId);
public System.Net.Sockets.SocketInformation DuplicateAndClose (int targetProcessId);
[System.MonoLimitation("We do not support passing sockets across processes, we merely allow this API to pass the socket across AppDomains")]
public System.Net.Sockets.SocketInformation DuplicateAndClose (int targetProcessId);
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
member this.DuplicateAndClose : int -> System.Net.Sockets.SocketInformation
member this.DuplicateAndClose : int -> System.Net.Sockets.SocketInformation
[<System.MonoLimitation("We do not support passing sockets across processes, we merely allow this API to pass the socket across AppDomains")>]
member this.DuplicateAndClose : int -> System.Net.Sockets.SocketInformation
Public Function DuplicateAndClose (targetProcessId As Integer) As SocketInformation

Parámetros

targetProcessId
Int32

Identificador del proceso de destino donde se crea un duplicado de la referencia del socket.

Devoluciones

SocketInformation

Referencia del socket que se va a pasar al proceso de destino.

Atributos
SupportedOSPlatformAttribute MonoLimitationAttribute

Excepciones

.NET Core en cualquier sistema operativo y .NET 5+ solo en sistemas operativos basados en Unix: no se admite la plataforma actual.

targetProcessID no es un identificador de proceso válido.

o bien

Se produjo un error al duplicar la referencia del socket.

Comentarios

El proceso de destino debe usar el Socket(SocketInformation) constructor para crear la instancia de socket duplicada.

No llame al Socket(SocketInformation) constructor varias veces con la misma matriz de bytes en el SocketInformation argumento de cada llamada. Si lo hace, tendrá varias instancias administradas Socket con el mismo socket subyacente, lo que no se recomienda encarecidamente.

En .NET Framework, si el proceso que crea el socket usa métodos asincrónicos, el proceso primero debe establecer la UseOnlyOverlappedIO propiedad trueen . De lo contrario, el método asincrónico enlazará el socket a un puerto de finalización de E /S del proceso de creación, lo que puede provocar que se inicie una ArgumentNullException excepción en el proceso de destino.

En .NET Core 1.0-3.1, este método no es compatible.

En .NET 5 y versiones posteriores, DuplicateAndClose(Int32) tiene compatibilidad limitada con Windows. A diferencia de .NET Framework, la UseOnlyOverlappedIO propiedad es un NOP, por lo que el proceso que crea el socket nunca debe llamar a métodos asincrónicos en el socket. Una llamada a una operación asincrónica siempre la enlazará a un puerto de finalización de E /S del proceso de creación, lo que puede provocar que se produzca una ArgumentNullException excepción en el proceso de destino.

Se aplica a