Socket.DuplicateAndClose(Int32) Metoda

Definicja

Duplikuje odwołanie gniazda dla procesu docelowego i zamyka gniazdo dla tego procesu.

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

Parametry

targetProcessId
Int32

Identyfikator procesu docelowego, w którym jest tworzony duplikat odwołania do gniazda.

Zwraca

SocketInformation

Odwołanie do gniazda, które ma zostać przekazane do procesu docelowego.

Atrybuty
SupportedOSPlatformAttribute MonoLimitationAttribute

Wyjątki

Platforma .NET Core w dowolnym systemie operacyjnym i programie .NET 5+ w systemie operacyjnym opartym na systemie Unix: bieżąca platforma nie jest obsługiwana.

targetProcessID nie jest prawidłowym identyfikatorem procesu.

-lub-

Duplikowanie odwołania gniazda nie powiodło się.

Uwagi

Proces docelowy powinien użyć konstruktora Socket(SocketInformation) do utworzenia zduplikowanego wystąpienia gniazda.

Nie należy wywoływać konstruktora Socket(SocketInformation) wiele razy przy użyciu tej samej tablicy bajtów w argumencie SocketInformation w każdym wywołaniu. Jeśli to zrobisz, będziesz mieć wiele wystąpień zarządzanych Socket z tym samym gniazdem bazowym, co jest zdecydowanie zniechęcone.

W .NET Framework, jeśli proces tworzenia gniazda używa metod asynchronicznych, proces musi najpierw ustawić UseOnlyOverlappedIO właściwość na true. W przeciwnym razie metoda asynchroniczna wiąże gniazdo z portem ukończenia we/ wy procesu tworzenia, co może spowodować ArgumentNullException zgłoszenie gniazda w procesie docelowym.

W programie .NET Core 1.0-3.1 ta metoda nie jest obsługiwana.

Na platformie .NET 5+, DuplicateAndClose(Int32) ma ograniczoną obsługę Windows. W przeciwieństwie do .NET Framework UseOnlyOverlappedIO właściwość jest NOP, dlatego proces tworzenia gniazda nigdy nie może wywoływać metod asynchronicznych w gniazdie. Wywołanie operacji asynchronicznej zawsze wiąże je z portem ukończenia we/ wy procesu tworzenia, co może spowodować ArgumentNullException , że proces docelowy zostanie zgłoszony.

Dotyczy