Socket.DuplicateAndClose(Int32) Método

Definição

Duplica a referência de soquete para o processo de destino e fecha o soquete para esse 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.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

Parâmetros

targetProcessId
Int32

A ID do processo de destino em que uma duplicata da referência de soquete é criada.

Retornos

SocketInformation

A referência de soquete a ser passada para o processo de destino.

Atributos
SupportedOSPlatformAttribute MonoLimitationAttribute

Exceções

O .NET Core em qualquer sistema operacional e .NET 5+ somente no sistema operacional baseado em Unix: a plataforma atual não tem suporte.

targetProcessID não é uma ID de processo válida.

- ou -

Falha na duplicação de referência do soquete.

Comentários

O processo de destino deve usar o Socket(SocketInformation) construtor para criar a instância de soquete duplicada.

Não chame o Socket(SocketInformation) construtor várias vezes usando a mesma matriz de bytes no SocketInformation argumento em cada chamada. Se você fizer isso, você terá várias instâncias gerenciadas Socket com o mesmo soquete subjacente, o que é fortemente desencorajado.

No .NET Framework, se o processo de criação do soquete usar métodos assíncronos, o processo deverá primeiro definir a UseOnlyOverlappedIO propriedade como true. Caso contrário, o método assíncrono associará o soquete a uma porta de conclusão de E/S do processo de criação, o que pode fazer com que um ArgumentNullException seja lançado no processo de destino.

No .NET Core 1.0-3.1, esse método não tem suporte.

No .NET 5+, DuplicateAndClose(Int32) tem suporte limitado em Windows. Ao contrário de .NET Framework, a UseOnlyOverlappedIO propriedade é um NOP, portanto, o processo de criação do soquete nunca deve chamar métodos assíncronos no soquete. Uma chamada para uma operação assíncrona sempre a associará a uma porta de conclusão de E/S do processo de criação, o que pode fazer com que um ArgumentNullException processo de destino seja gerado.

Aplica-se a