Sdílet prostřednictvím


Socket.DuplicateAndClose(Int32) Metoda

Definice

Duplikuje odkaz soketu pro cílový proces a zavře soket pro tento proces.

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

Parametry

targetProcessId
Int32

ID cílového procesu, ve kterém je vytvořen duplicitní odkaz soketu.

Návraty

Odkaz soketu, který má být předán cílovému procesu.

Atributy

Výjimky

.NET Core v libovolném operačním systému a .NET 5+ pouze v operačním systému Unix: Aktuální platforma se nepodporuje.

targetProcessID není platné ID procesu.

-nebo-

Duplikace odkazu na soket se nezdařila.

Poznámky

Cílový proces by měl použít Socket(SocketInformation) konstruktor k vytvoření duplicitní instance soketu.

Nevolejte Socket(SocketInformation) konstruktor vícekrát pomocí stejného pole bajtů v argumentu SocketInformation v každém volání. Pokud to uděláte, budete mít několik spravovaných Socket instancí se stejným podkladovým soketem, což důrazně nedoporučujeme.

Pokud proces vytvářející soket v rozhraní .NET Framework používá asynchronní metody, musí proces nejprve nastavit UseOnlyOverlappedIO vlastnost na true. Jinak asynchronní metoda vytvoří vazbu soketu na vstupně-výstupní port dokončení procesu vytváření, což může způsobit ArgumentNullException vyvolání v cílovém procesu.

V .NET Core 1.0-3.1 se tato metoda nepodporuje.

Rozhraní .NET 5+ DuplicateAndClose(Int32) má omezenou podporu ve Windows. Na rozdíl od rozhraní .NET Framework UseOnlyOverlappedIO je vlastnost NOP, proto proces vytváření soketu nikdy nesmí volat asynchronní metody na soketu. Volání asynchronní operace vždy vytvoří vazbu na vstupně-výstupní port pro dokončení procesu vytváření, což může způsobit ArgumentNullException vyvolání objektu v cílovém procesu.

Platí pro