Socket.DuplicateAndClose(Int32) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.Runtime.Versioning.SupportedOSPlatform("windows")>]
member this.DuplicateAndClose : int -> System.Net.Sockets.SocketInformation
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
Referencia del socket que se va a pasar al proceso de destino.
- Atributos
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.
En .NET Framework, si el proceso que crea el socket usa métodos asincrónicos, el proceso primero debe establecer la UseOnlyOverlappedIO propiedad en true
. 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 en ArgumentNullException 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 inicie en ArgumentNullException el proceso de destino.