Condividi tramite


Socket.DuplicateAndClose(Int32) Metodo

Definizione

Duplica il riferimento al socket per il processo di destinazione e chiude il socket per questo processo.

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

Parametri

targetProcessId
Int32

ID del processo di destinazione in cui viene creato un duplicato del riferimento al socket.

Valori restituiti

Riferimento socket da passare al processo di destinazione.

Attributi

Eccezioni

.NET Core in qualsiasi sistema operativo e .NET 5+ solo nel sistema operativo basato su Unix: la piattaforma corrente non è supportata.

targetProcessId non è un ID di processo valido.

oppure

La duplicazione del riferimento al socket non è riuscita.

Commenti

Il processo di destinazione deve usare il Socket(SocketInformation) costruttore per creare l'istanza del socket duplicata.

Non chiamare il Socket(SocketInformation) costruttore più volte usando la stessa matrice di byte nell'argomento SocketInformation in ogni chiamata. In questo caso, si avranno più istanze gestite Socket con lo stesso socket sottostante, che è fortemente sconsigliato.

In .NET Framework, se il processo che crea il socket usa metodi asincroni, il processo deve prima impostare la UseOnlyOverlappedIO proprietà su true. In caso contrario, il metodo asincrono associa il socket a una porta di completamento di I/O del processo di creazione, che può causare la creazione di un'eccezione ArgumentNullException nel processo di destinazione.

DuplicateAndClose(Int32) ha un supporto limitato in Windows. A differenza di .NET Framework, la UseOnlyOverlappedIO proprietà è un NOP, pertanto il processo che crea il socket non deve mai chiamare metodi asincroni nel socket. Una chiamata a un'operazione asincrona lo associa sempre a una porta di completamento I/O del processo di creazione, che può causare la creazione di un'eccezione ArgumentNullException nel processo di destinazione.

Si applica a