Socket.DuplicateAndClose(Int32) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
複製目標程序的套接字參考,並關閉該程序的套接字。
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 作業系統:目前平台不支援。
備註
目標程序應該使用 Socket(SocketInformation) 建構子來建立重複的套接字實例。
每次呼叫時,不要在每次呼叫中使用相同的位元組陣列SocketInformation多次呼叫Socket(SocketInformation)建構子。 如果有,你就會有多個 Socket 管理實例,底層套接字相同,這是強烈不建議的。
在 .NET Framework 中,若建立套接字的程序使用非同步方法,程序必須先將屬性設定 UseOnlyOverlappedIO 為 true。 否則,非同步方法會將套接字綁定到建立程序的 I/O 完成埠 ,可能導致 丟 ArgumentNullException 入目標程序。
DuplicateAndClose(Int32) 在 Windows 上支援有限。 與 .NET Framework 不同,該 UseOnlyOverlappedIO 屬性是 NOP,因此建立套接字的程序絕不需呼叫該套接字的非同步方法。 呼叫非同步操作時,總是會將其綁定到建立程序的 I/O 完成埠 ,這可能導致 ArgumentNullException 被丟入目標程序。