Partager via


Socket.DuplicateAndClose(Int32) Méthode

Définition

Duplique la référence de socket pour le processus cible et ferme le socket pour ce processus.

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

Paramètres

targetProcessId
Int32

ID du processus cible où un doublon de la référence de socket est créé.

Retours

Référence de socket à passer au processus cible.

Attributs

Exceptions

.NET Core sur n’importe quel système d’exploitation et .NET 5+ sur le système d’exploitation Unix uniquement : la plateforme actuelle n’est pas prise en charge.

targetProcessID n'est pas un ID de processus valide.

- ou -

La duplication de la référence de socket a échoué.

Remarques

Le processus cible doit utiliser le Socket(SocketInformation) constructeur pour créer le socket en double instance.

N’appelez pas le Socket(SocketInformation) constructeur plusieurs fois à l’aide du même tableau d’octets dans l’argument SocketInformation dans chaque appel. Dans ce cas, vous disposerez de plusieurs instances managées Socket avec le même socket sous-jacent, ce qui est fortement déconseillé.

Sur .NET Framework, si le processus de création du socket utilise des méthodes asynchrones, le processus doit d’abord définir la propriété sur UseOnlyOverlappedIOtrue. Sinon, la méthode asynchrone lie le socket à un port d’achèvement des E/S du processus de création, ce qui peut entraîner la levée d’un ArgumentNullException dans le processus cible.

Sur .NET Core 1.0-3.1, cette méthode n’est pas prise en charge.

Sur .NET 5+, DuplicateAndClose(Int32) offre une prise en charge limitée sur Windows. Contrairement à .NET Framework, la UseOnlyOverlappedIO propriété est un NOP. Par conséquent, le processus de création du socket ne doit jamais appeler des méthodes asynchrones sur le socket. Un appel à une opération asynchrone la lie toujours à un port d’achèvement d’E/S du processus de création, ce qui peut entraîner la levée d’un ArgumentNullException dans le processus cible.

S’applique à