다음을 통해 공유


Socket.DuplicateAndClose(Int32) 메서드

정의

대상 프로세스에 대한 소켓 참조를 복제하고 이 프로세스의 소켓을 닫습니다.

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

매개 변수

targetProcessId
Int32

소켓 참조의 복제본을 만드는 대상 프로세스의 ID입니다.

반환

대상 프로세스에 전달될 소켓 참조입니다.

특성

예외

모든 OS의 .NET Core 및 Unix 기반 OS의 .NET 5 이상만 해당: 현재 플랫폼은 지원되지 않습니다.

targetProcessID가 잘못된 프로세스 ID인 경우

또는

소켓 참조를 복제하지 못한 경우

설명

대상 프로세스는 생성자를 사용하여 Socket(SocketInformation) 중복 소켓 instance 만들어야 합니다.

각 호출의 인수에서 Socket(SocketInformation)SocketInformation 동일한 바이트 배열을 사용하여 생성자를 여러 번 호출하지 마세요. 이렇게 하면 동일한 기본 소켓을 사용하는 관리되는 인스턴스가 여러 Socket 개 있으므로 권장되지 않습니다.

.NET Framework 소켓을 만드는 프로세스에서 비동기 메서드를 사용하는 경우 프로세스는 먼저 속성을 true로 설정 UseOnlyOverlappedIO 해야 합니다. 그렇지 않으면 비동기 메서드는 소켓을 만들기 프로세스의 I/O 완료 포트 에 바인딩하여 대상 프로세스에서 이 ArgumentNullException throw될 수 있습니다.

.NET Core 1.0-3.1에서 이 메서드는 지원되지 않습니다.

.NET 5 이상 DuplicateAndClose(Int32) 에서는 Windows에서 지원이 제한됩니다. .NET Framework UseOnlyOverlappedIO 달리 속성은 NOP이므로 소켓을 만드는 프로세스는 소켓에서 비동기 메서드를 호출해서는 안 됩니다. 비동기 작업에 대한 호출은 항상 생성 프로세스의 I/O 완료 포트 에 바인딩되므로 대상 프로세스에서 이 ArgumentNullException throw될 수 있습니다.

적용 대상