Socket.BeginConnect 方法

定義

開始遠端主機連接的非同步要求。

多載

BeginConnect(EndPoint, AsyncCallback, Object)

開始遠端主機連接的非同步要求。

BeginConnect(IPAddress, Int32, AsyncCallback, Object)

開始遠端主機連接的非同步要求。 此主機是由 IPAddress 和連接埠號碼所指定。

BeginConnect(IPAddress[], Int32, AsyncCallback, Object)

開始遠端主機連接的非同步要求。 主機是由 IPAddress 陣列和通訊埠編號指定。

BeginConnect(String, Int32, AsyncCallback, Object)

開始遠端主機連接的非同步要求。 此主機是由主機名稱和連接埠號碼指定。

BeginConnect(EndPoint, AsyncCallback, Object)

來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs

開始遠端主機連接的非同步要求。

public:
 IAsyncResult ^ BeginConnect(System::Net::EndPoint ^ remoteEP, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginConnect (System.Net.EndPoint remoteEP, AsyncCallback? callback, object? state);
public IAsyncResult BeginConnect (System.Net.EndPoint remoteEP, AsyncCallback callback, object state);
member this.BeginConnect : System.Net.EndPoint * AsyncCallback * obj -> IAsyncResult
Public Function BeginConnect (remoteEP As EndPoint, callback As AsyncCallback, state As Object) As IAsyncResult

參數

remoteEP
EndPoint

EndPoint,表示遠端主機。

callback
AsyncCallback

AsyncCallback 委派。

state
Object

物件,包含這個要求的狀態資訊。

傳回

參考非同步連接的 IAsyncResult

例外狀況

remoteEPnull

.NET Framework 和 .NET 5 和更早版本:嘗試存取套接字時發生錯誤。

在呼叫堆疊中位置較高的呼叫端對於要求的作業沒有權限。

藉由呼叫 Listen(Int32) 已令 Socket 處於接聽狀態,或者非同步作業已在進行中。

備註

重要

這是相容性 API。 不建議使用 APM (Begin*End*) 方法來進行新的開發。 請改用型對 Task等專案。

線上導向通訊協定可以使用 BeginAccept 方法來開始接受連入連線嘗試。 產生的接受作業是由傳 IAsyncResult 回的 表示,即使可能同步完成也一樣。 呼叫 BeginAccept 方法之前,您必須呼叫 Listen 方法來接聽和排入連入連線要求。

您可以傳遞實作 AsyncCallbackBeginAccept 的回呼,以取得完成接受作業的通知。 請注意,如果基礎網路堆疊以同步方式完成作業,則回呼可能會在呼叫 BeginAccept期間內嵌執行。 在此情況下, CompletedSynchronously 傳回 IAsyncResult 的 屬性會設定為 true ,以指出方法已同步完成。 AsyncState使用 的 IAsyncResult 屬性,取得傳遞至 BeginAccept 方法的狀態物件。

呼叫 BeginAccept 方法必須完成 EndAccept 作業。 一般而言,提供的 AsyncCallback 委派會叫用 方法。 EndAccept 將會封鎖呼叫線程,直到作業完成為止。

若要取消對 方法的 BeginAccept 擱置呼叫,請關閉 SocketClose在異步操作進行時呼叫 方法時,會呼叫提供給 方法的BeginAccept回呼。 方法的後續呼叫EndAccept會在 .NET 7) 或 SocketException .NET 7+) 上的 (之前擲回 ObjectDisposedException (,以指出作業已取消。

注意

您可以使用 RemoteEndPointSocket 回的 屬性來識別遠端主機的網路位址和埠號碼。

注意

如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。

注意

在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤

注意

系統會快 Socket 取異步方法 (安全性內容、模擬使用者和呼叫內容) 的執行內容。 在第一次使用特定內容 (特定異步 Socket 方法、特定 Socket 實例和特定回呼) 之後,該內容的後續使用將會看到效能改善。

另請參閱

適用於

BeginConnect(IPAddress, Int32, AsyncCallback, Object)

來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs

開始遠端主機連接的非同步要求。 此主機是由 IPAddress 和連接埠號碼所指定。

public:
 IAsyncResult ^ BeginConnect(System::Net::IPAddress ^ address, int port, AsyncCallback ^ requestCallback, System::Object ^ state);
public IAsyncResult BeginConnect (System.Net.IPAddress address, int port, AsyncCallback? requestCallback, object? state);
public IAsyncResult BeginConnect (System.Net.IPAddress address, int port, AsyncCallback requestCallback, object state);
member this.BeginConnect : System.Net.IPAddress * int * AsyncCallback * obj -> IAsyncResult
Public Function BeginConnect (address As IPAddress, port As Integer, requestCallback As AsyncCallback, state As Object) As IAsyncResult

參數

address
IPAddress

遠端主機的 IPAddress

port
Int32

遠端主機的連接埠號碼。

requestCallback
AsyncCallback

AsyncCallback 委派,會於連接作業完成時參考要叫用的方法。

state
Object

包含連線作業資訊的使用者定義物件。 作業完成時會將這個物件傳遞至 requestCallback 委派。

傳回

參考非同步連接的 IAsyncResult

例外狀況

addressnull

.NET Framework 和 .NET 5 和更早版本:嘗試存取套接字時發生錯誤。

Socket 不在通訊端系列。

連接埠號碼無效。

address 的長度為零。

藉由呼叫 Listen(Int32) 已令 Socket 處於接聽狀態,或者非同步作業已在進行中。

備註

重要

這是相容性 API。 不建議使用 APM (Begin*End*) 方法來進行新的開發。 請改用型對 Task等專案。

如果您使用連接導向的通訊協定,方法 BeginConnect 會啟動與 參數所指定端點連線的 remoteEP 異步要求。 如果您使用無連線通訊協定, BeginConnect 請建立預設遠端主機。

您可以傳遞實作 AsyncCallbackBeginConnect 的回呼,以取得連線作業完成的通知。 請注意,如果基礎網路堆疊以同步方式完成作業,則回呼可能會在呼叫 BeginConnect期間內嵌執行。 在此情況下, CompletedSynchronously 傳回 IAsyncResult 的 屬性會設定為 true ,以指出方法已同步完成。 AsyncState使用 的 IAsyncResult 屬性,取得傳遞至 BeginConnect 方法的狀態物件。

呼叫 BeginConnect 方法必須完成 EndConnect 作業。 一般而言,提供的 AsyncCallback 委派會叫用 方法。 EndConnect 將會封鎖呼叫線程,直到作業完成為止。

如果您使用 UDP 之類的無連線通訊協定,則不需要在傳送和接收資料之前呼叫 BeginConnect 。 您可以使用 BeginSendToBeginReceiveFrom 與遠端主機通訊。 如果您呼叫 BeginConnect,則會捨棄從指定預設值以外的位址抵達的任何數據報。 如果您要將預設遠端主機設定為廣播位址,您必須先呼叫 SetSocketOption 並將 Broadcast 設定為 true。 如果無法, BeginConnect 會擲回 SocketException

如果您使用連線導向通訊協定,且未在呼叫 之前呼叫 BindBeginConnect,則基礎服務提供者會指派最適當的局域網路位址和埠號碼。 如果您使用無連線通訊協定,在呼叫 BeginSendReceiveFrom 方法之前,服務提供者不會指派局域網路位址和埠號碼。 如果您想要變更預設遠端主機,請使用所需的端點再次呼叫 BeginConnect 方法。

若要取消對 方法的 BeginConnect 擱置呼叫,請關閉 SocketClose在異步操作進行時呼叫 方法時,會呼叫提供給 方法的BeginConnect回呼。 方法的後續呼叫EndConnect會在 .NET 7) 或 SocketException .NET 7+) 上的 (之前擲回 ObjectDisposedException (,以指出作業已取消。

注意

如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。

注意

如果先前已中斷連線此套接字, BeginConnect 則必須在線程上呼叫,直到作業完成為止才會結束。 這是基礎提供者的限制。

注意

在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤

注意

系統會針對異步 Socket 方法快取執行內容 (安全性內容、仿真的使用者和呼叫內容) 。 在第一次使用特定內容 (特定異步 Socket 方法、特定 Socket 實例和特定回呼) 之後,後續使用該內容將會看到效能改善。

另請參閱

適用於

BeginConnect(IPAddress[], Int32, AsyncCallback, Object)

來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs

開始遠端主機連接的非同步要求。 主機是由 IPAddress 陣列和通訊埠編號指定。

public:
 IAsyncResult ^ BeginConnect(cli::array <System::Net::IPAddress ^> ^ addresses, int port, AsyncCallback ^ requestCallback, System::Object ^ state);
public IAsyncResult BeginConnect (System.Net.IPAddress[] addresses, int port, AsyncCallback? requestCallback, object? state);
public IAsyncResult BeginConnect (System.Net.IPAddress[] addresses, int port, AsyncCallback requestCallback, object state);
member this.BeginConnect : System.Net.IPAddress[] * int * AsyncCallback * obj -> IAsyncResult
Public Function BeginConnect (addresses As IPAddress(), port As Integer, requestCallback As AsyncCallback, state As Object) As IAsyncResult

參數

addresses
IPAddress[]

至少一個 IPAddress,指定遠端主機。

port
Int32

遠端主機的連接埠號碼。

requestCallback
AsyncCallback

AsyncCallback 委派,會於連接作業完成時參考要叫用的方法。

state
Object

包含連線作業資訊的使用者定義物件。 作業完成時會將這個物件傳遞至 requestCallback 委派。

傳回

參考非同步連接的 IAsyncResult

例外狀況

addressesnull

僅限 .NET Framework 和 .NET 5 和更早版本:嘗試存取套接字時發生錯誤。

這個方法對使用 InterNetworkInterNetworkV6 的通訊端有效。

連接埠號碼無效。

address 的長度為零。

藉由呼叫 Listen(Int32) 已令 Socket 處於接聽狀態,或者非同步作業已在進行中。

備註

重要

這是相容性 API。 不建議使用 APM (Begin*End*) 方法來進行新的開發。 請改用 Task以 為基礎的對等專案。

如果您使用連接導向通訊協定,方法會 BeginConnect 啟動異步要求,以連接 參數所 remoteEP 指定的端點。 如果您使用無連線通訊協定, BeginConnect 請建立預設遠端主機。

您可以傳遞實作 AsyncCallback 的回呼給 BeginConnect ,以取得有關聯機作業完成的通知。 請注意,如果基礎網路堆疊以同步方式完成作業,則回呼可能會在呼叫 BeginConnect期間內嵌執行。 在此情況下, CompletedSynchronously 傳回 IAsyncResult 之 上的屬性會設定為 true ,表示方法會以同步方式完成。 AsyncState使用 的 IAsyncResult 屬性,取得傳遞至 BeginConnect 方法的狀態物件。

BeginConnect作業必須藉由呼叫 EndConnect 方法來完成。 一般而言,方法是由提供的 AsyncCallback 委派叫用。 EndConnect 將會封鎖呼叫線程,直到作業完成為止。

如果您使用 UDP 之類的無連線通訊協定,則不需要在傳送和接收資料之前呼叫 BeginConnect 。 您可以使用 BeginSendToBeginReceiveFrom 與遠端主機通訊。 如果您呼叫 BeginConnect,則會捨棄從指定預設值以外的位址抵達的任何數據報。 如果您要將預設遠端主機設定為廣播位址,您必須先呼叫 SetSocketOption ,並將 Broadcast 設定為 true。 如果無法, BeginConnect 會擲回 SocketException

如果您使用連線導向通訊協定,而且在呼叫 之前未呼叫 BindBeginConnect,基礎服務提供者會指派最適當的局域網路位址和埠號碼。 如果您使用無連線通訊協定,在呼叫 BeginSendReceiveFrom 方法之前,服務提供者不會指派局域網路位址和埠號碼。 如果您想要變更預設遠端主機,請使用所需的端點再次呼叫 BeginConnect 方法。

若要取消對 方法的 BeginConnect 暫止呼叫,請關閉 SocketClose在異步操作進行時呼叫 方法時,會呼叫提供給 方法的BeginConnect回呼。 後續呼叫 EndConnect 方法會在 .NET 7) 或 SocketException .NET 7+) 上的 (之前擲回 ObjectDisposedException (,以指出作業已取消。

注意

如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。

注意

如果先前已中斷連線此套接字, BeginConnect 則必須在完成作業之前不會結束的線程上呼叫 。 這是基礎提供者的限制。

注意

在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤

注意

系統會針對異步 Socket 方法快取執行內容 (安全性內容、仿真的使用者和呼叫內容) 。 在第一次使用特定內容 (特定異步 Socket 方法、特定 Socket 實例和特定回呼) 之後,後續使用該內容將會看到效能改善。

另請參閱

適用於

BeginConnect(String, Int32, AsyncCallback, Object)

來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs

開始遠端主機連接的非同步要求。 此主機是由主機名稱和連接埠號碼指定。

public:
 IAsyncResult ^ BeginConnect(System::String ^ host, int port, AsyncCallback ^ requestCallback, System::Object ^ state);
public IAsyncResult BeginConnect (string host, int port, AsyncCallback? requestCallback, object? state);
public IAsyncResult BeginConnect (string host, int port, AsyncCallback requestCallback, object state);
member this.BeginConnect : string * int * AsyncCallback * obj -> IAsyncResult
Public Function BeginConnect (host As String, port As Integer, requestCallback As AsyncCallback, state As Object) As IAsyncResult

參數

host
String

遠端主機的名稱。

port
Int32

遠端主機的連接埠號碼。

requestCallback
AsyncCallback

AsyncCallback 委派,會於連接作業完成時參考要叫用的方法。

state
Object

包含連線作業資訊的使用者定義物件。 作業完成時會將這個物件傳遞至 requestCallback 委派。

傳回

參考非同步連接的 IAsyncResult

例外狀況

hostnull

這個方法對於 InterNetworkInterNetworkV6 系列的通訊端有效。

連接埠號碼無效。

藉由呼叫 Listen(Int32) 已令 Socket 處於接聽狀態,或者非同步作業已在進行中。

備註

重要

這是相容性 API。 不建議使用 APM (Begin*End*) 方法來進行新的開發。 請改用 Task以 為基礎的對等專案。

如果您使用連接導向通訊協定,方法會 BeginConnect 啟動異步要求,以連接 參數所 remoteEP 指定的端點。 如果您使用無連線通訊協定, BeginConnect 請建立預設遠端主機。

您可以傳遞實作 AsyncCallback 的回呼給 BeginConnect ,以取得有關聯機作業完成的通知。 請注意,如果基礎網路堆疊以同步方式完成作業,則回呼可能會在呼叫 BeginConnect期間內嵌執行。 在此情況下, CompletedSynchronously 傳回 IAsyncResult 之 上的屬性會設定為 true ,表示方法會以同步方式完成。 AsyncState使用 的 IAsyncResult 屬性,取得傳遞至 BeginConnect 方法的狀態物件。

BeginConnect作業必須藉由呼叫 EndConnect 方法來完成。 一般而言,方法是由提供的 AsyncCallback 委派叫用。 EndConnect 將會封鎖呼叫線程,直到作業完成為止。

如果您使用 UDP 之類的無連線通訊協定,則不需要在傳送和接收資料之前呼叫 BeginConnect 。 您可以使用 BeginSendToBeginReceiveFrom 與遠端主機通訊。 如果您呼叫 BeginConnect,則會捨棄從指定預設值以外的位址抵達的任何數據報。 如果您要將預設遠端主機設定為廣播位址,您必須先呼叫 SetSocketOption ,並將 Broadcast 設定為 true。 如果無法, BeginConnect 會擲回 SocketException

如果您使用連線導向通訊協定,而且在呼叫 之前未呼叫 BindBeginConnect,基礎服務提供者會指派最適當的局域網路位址和埠號碼。 如果您使用無連線通訊協定,在呼叫 BeginSendReceiveFrom 方法之前,服務提供者不會指派局域網路位址和埠號碼。 如果您想要變更預設遠端主機,請使用所需的端點再次呼叫 BeginConnect 方法。

若要取消對 方法的 BeginConnect 暫止呼叫,請關閉 SocketClose在異步操作進行時呼叫 方法時,會呼叫提供給 方法的BeginConnect回呼。 後續呼叫 EndConnect 方法會在 .NET 7) 或 SocketException .NET 7+) 上的 (之前擲回 ObjectDisposedException (,以指出作業已取消。

注意

如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。

注意

如果先前已中斷連線此套接字, BeginConnect 則必須在線程上呼叫,直到作業完成為止才會結束。 這是基礎提供者的限制。

注意

在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤

注意

系統會快 Socket 取異步方法 (安全性內容、模擬使用者和呼叫內容) 的執行內容。 在第一次使用特定內容 (特定異步 Socket 方法、特定 Socket 實例和特定回呼) 之後,該內容的後續使用將會看到效能改善。

另請參閱

適用於