共用方式為


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,該程序建立套接字參考的複製品。

傳回

要傳遞給目標程序的套接字參考。

屬性

例外狀況

.NET Core 可支援任何作業系統,.NET 5+ 僅限 Unix 作業系統:目前平台不支援。

targetProcessId 不是有效的程序識別碼。

-或-

套接點參考的複製失敗。

備註

目標程序應該使用 Socket(SocketInformation) 建構子來建立重複的套接字實例。

每次呼叫時,不要在每次呼叫中使用相同的位元組陣列SocketInformation多次呼叫Socket(SocketInformation)建構子。 如果有,你就會有多個 Socket 管理實例,底層套接字相同,這是強烈不建議的。

在 .NET Framework 中,若建立套接字的程序使用非同步方法,程序必須先將屬性設定 UseOnlyOverlappedIOtrue。 否則,非同步方法會將套接字綁定到建立程序的 I/O 完成埠 ,可能導致 丟 ArgumentNullException 入目標程序。

DuplicateAndClose(Int32) 在 Windows 上支援有限。 與 .NET Framework 不同,該 UseOnlyOverlappedIO 屬性是 NOP,因此建立套接字的程序絕不需呼叫該套接字的非同步方法。 呼叫非同步操作時,總是會將其綁定到建立程序的 I/O 完成埠 ,這可能導致 ArgumentNullException 被丟入目標程序。

適用於