Socket.BeginReceive 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
開始從已連接的 Socket 非同步接收資料。
多載
BeginReceive(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)
- 來源:
- Socket.cs
- 來源:
- Socket.cs
- 來源:
- Socket.cs
開始從已連接的 Socket 非同步接收資料。
public:
IAsyncResult ^ BeginReceive(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult? BeginReceive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
member this.BeginReceive : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceive (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef errorCode As SocketError, callback As AsyncCallback, state As Object) As IAsyncResult
參數
- offset
- Int32
buffer
中存放已接收資料的位置。
- size
- Int32
要接收的位元組數。
- socketFlags
- SocketFlags
SocketFlags 值的位元組合。
- errorCode
- SocketError
SocketError 物件,儲存通訊端錯誤。
- callback
- AsyncCallback
AsyncCallback 委派,會於作業完成時參考要叫用的方法。
- state
- Object
使用者定義的物件,包含接收作業的相關資訊。 作業完成時會將這個物件傳遞至 EndReceive(IAsyncResult) 委派。
傳回
參考非同步讀取的 IAsyncResult。
例外狀況
buffer
為 null
。
僅限 .NET Framework 和 .NET 5 和更早版本:嘗試存取套接字時發生錯誤。
這個 Socket 已關閉。
offset
小於 0。
-或-
offset
大於 buffer
的長度。
-或-
size
小於 0。
-或-
size
大於 buffer
的長度減去 offset
參數的值。
備註
重要
這是相容性 API。 不建議使用 APM (Begin*
和 End*
) 方法來進行新的開發。 請改用 Task
以 為基礎的對等專案。
您可以傳遞實作 AsyncCallback 的回呼給 BeginReceive ,以取得作業完成的通知。 請注意,如果基礎網路堆疊以同步方式完成作業,回呼將會在呼叫 BeginReceive期間內嵌執行。 在此情況下, CompletedSynchronously 傳回 IAsyncResult 之 上的屬性會設定為 true
,表示方法會以同步方式完成。
AsyncState使用 的 IAsyncResult 屬性,取得傳遞至 BeginReceive 方法的狀態物件。
BeginReceive異步操作必須藉由呼叫 EndReceive 方法來完成。 一般而言,委派會叫用 AsyncCallback 方法。 EndReceive 將會封鎖呼叫線程,直到作業完成為止。
Socket關閉 以取消擱置BeginReceive中的 。 Close在異步操作進行時呼叫 方法時,會呼叫提供給 方法的BeginReceive回呼。 後續呼叫 EndReceive 方法會在 .NET 7) 或 SocketException .NET 7+) 上的 (之前擲回 ObjectDisposedException (,以指出作業已取消。
注意
如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。
注意
當該線程結束時,指定的線程所起始的所有 I/O 都會取消。 如果線程在作業完成之前結束,暫止的異步操作可能會失敗。
注意
state
是使用者定義類別的具現化。
注意
在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤。
注意
系統會針對異步 Socket 方法快取執行內容 (安全性內容、仿真的使用者和呼叫內容) 。 在第一次使用特定內容 (特定異步 Socket 方法、特定 Socket 實例和特定回呼) 之後,後續使用該內容將會看到效能改善。
另請參閱
- EndAccept(IAsyncResult)
- AsyncCallback
- Connect(EndPoint)
- BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- 做為回呼方法,委派封送處理
- 非同步用戶端通訊端範例
- 非同步伺服器通訊端範例
適用於
BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- 來源:
- Socket.cs
- 來源:
- Socket.cs
- 來源:
- Socket.cs
開始從已連接的 Socket 非同步接收資料。
public:
IAsyncResult ^ BeginReceive(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginReceive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
member this.BeginReceive : byte[] * int * int * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceive (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, callback As AsyncCallback, state As Object) As IAsyncResult
參數
- offset
- Int32
buffer
參數中要儲存已接收資料的以零起始的位置。
- size
- Int32
要接收的位元組數。
- socketFlags
- SocketFlags
SocketFlags 值的位元組合。
- callback
- AsyncCallback
AsyncCallback 委派,會於作業完成時參考要叫用的方法。
- state
- Object
使用者定義的物件,包含接收作業的相關資訊。 作業完成時會將這個物件傳遞至 EndReceive(IAsyncResult) 委派。
傳回
參考非同步讀取的 IAsyncResult。
例外狀況
buffer
為 null
。
僅限 .NET Framework 和 .NET 5 和更早版本:嘗試存取套接字時發生錯誤。
這個 Socket 已關閉。
offset
小於 0。
-或-
offset
大於 buffer
的長度。
-或-
size
小於 0。
-或-
size
大於 buffer
的長度減去 offset
參數的值。
備註
重要
這是相容性 API。 不建議使用 APM (Begin*
和 End*
) 方法來進行新的開發。 請改用 Task
以 為基礎的對等專案。
您可以傳遞實作 AsyncCallback 的回呼給 BeginReceive ,以取得作業完成的通知。 請注意,如果基礎網路堆疊以同步方式完成作業,回呼將會在呼叫 BeginReceive期間內嵌執行。 在此情況下, CompletedSynchronously 傳回 IAsyncResult 之 上的屬性會設定為 true
,表示方法會以同步方式完成。
AsyncState使用 的 IAsyncResult 屬性,取得傳遞至 BeginReceive 方法的狀態物件。
BeginReceive異步操作必須藉由呼叫 EndReceive 方法來完成。 一般而言,委派會叫用 AsyncCallback 方法。 EndReceive 將會封鎖呼叫線程,直到作業完成為止。
Socket關閉 以取消擱置BeginReceive中的 。 Close在異步操作進行時呼叫 方法時,會呼叫提供給 方法的BeginReceive回呼。 後續呼叫 EndReceive 方法會在 .NET 7) 或 SocketException .NET 7+) 上的 (之前擲回 ObjectDisposedException (,以指出作業已取消。
注意
如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。
注意
當該線程結束時,指定的線程所起始的所有 I/O 都會取消。 如果線程在作業完成之前結束,暫止的異步操作可能會失敗。
注意
state
是使用者定義類別的具現化。
注意
在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤。
注意
系統會快 Socket 取異步方法 (安全性內容、模擬使用者和呼叫內容) 的執行內容。 在第一次使用特定內容 (特定異步 Socket 方法、特定 Socket 實例和特定回呼) 之後,該內容的後續使用將會看到效能改善。
另請參閱
- EndAccept(IAsyncResult)
- AsyncCallback
- Connect(EndPoint)
- BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- 做為回呼方法,委派封送處理
- 非同步用戶端通訊端範例
- 非同步伺服器通訊端範例
適用於
BeginReceive(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)
- 來源:
- Socket.cs
- 來源:
- Socket.cs
- 來源:
- Socket.cs
開始從已連接的 Socket 非同步接收資料。
public:
IAsyncResult ^ BeginReceive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
member this.BeginReceive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceive (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, callback As AsyncCallback, state As Object) As IAsyncResult
參數
- buffers
- IList<ArraySegment<Byte>>
Byte 型別的陣列,為收到資料的存放位置。
- socketFlags
- SocketFlags
SocketFlags 值的位元組合。
- callback
- AsyncCallback
AsyncCallback 委派,會於作業完成時參考要叫用的方法。
- state
- Object
使用者定義的物件,包含接收作業的相關資訊。 作業完成時會將這個物件傳遞至 EndReceive(IAsyncResult) 委派。
傳回
參考非同步讀取的 IAsyncResult。
例外狀況
buffer
為 null
。
.NET Framework 和 .NET 5 和更早版本:嘗試存取套接字時發生錯誤。
這個 Socket 已關閉。
備註
重要
這是相容性 API。 不建議使用 APM (Begin*
和 End*
) 方法來進行新的開發。 請改用型對 Task
等專案。
您可以傳遞實作 AsyncCallbackBeginReceive 的回呼,以取得作業完成的通知。 請注意,如果基礎網路堆疊以同步方式完成作業,則會在呼叫 BeginReceive期間內嵌執行回呼。 在此情況下, CompletedSynchronously 傳回 IAsyncResult 的 屬性會設定為 true
,以指出方法已同步完成。
AsyncState使用 的 IAsyncResult 屬性,取得傳遞至 BeginReceive 方法的狀態物件。
異步 BeginReceive 操作必須藉由呼叫 EndReceive 方法來完成。 一般而言,委派會叫 AsyncCallback 用 方法。 EndReceive 將會封鎖呼叫線程,直到作業完成為止。
Socket關閉 以取消擱置BeginReceive的 。 Close在異步操作進行時呼叫 方法時,會呼叫提供給 方法的BeginReceive回呼。 方法的後續呼叫EndReceive會在 .NET 7) 或 SocketException .NET 7+) 上的 (之前擲回 ObjectDisposedException (,以指出作業已取消。
注意
如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。
注意
當該線程結束時,由指定線程起始的所有 I/O 都會取消。 如果線程在作業完成之前結束,暫止的異步操作可能會失敗。
注意
state
是使用者定義類別的具現化。
注意
在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤。
注意
系統會快 Socket 取異步方法 (安全性內容、模擬使用者和呼叫內容) 的執行內容。 在第一次使用特定內容 (特定異步 Socket 方法、特定 Socket 實例和特定回呼) 之後,該內容的後續使用將會看到效能改善。
另請參閱
- EndAccept(IAsyncResult)
- AsyncCallback
- Connect(EndPoint)
- BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- 做為回呼方法,委派封送處理
- 非同步用戶端通訊端範例
- 非同步伺服器通訊端範例
適用於
BeginReceive(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)
- 來源:
- Socket.cs
- 來源:
- Socket.cs
- 來源:
- Socket.cs
開始從已連接的 Socket 非同步接收資料。
public:
IAsyncResult ^ BeginReceive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult? BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
member this.BeginReceive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceive (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError, callback As AsyncCallback, state As Object) As IAsyncResult
參數
- buffers
- IList<ArraySegment<Byte>>
Byte 型別的陣列,為收到資料的存放位置。
- socketFlags
- SocketFlags
SocketFlags 值的位元組合。
- errorCode
- SocketError
SocketError 物件,儲存通訊端錯誤。
- callback
- AsyncCallback
AsyncCallback 委派,會於作業完成時參考要叫用的方法。
- state
- Object
使用者定義的物件,包含接收作業的相關資訊。 作業完成時會將這個物件傳遞至 EndReceive(IAsyncResult) 委派。
傳回
參考非同步讀取的 IAsyncResult。
例外狀況
buffer
為 null
。
.NET Framework 和 .NET 5 和更早版本:嘗試存取套接字時發生錯誤。
這個 Socket 已關閉。
備註
重要
這是相容性 API。 不建議使用 APM (Begin*
和 End*
) 方法來進行新的開發。 請改用型對 Task
等專案。
您可以傳遞實作 AsyncCallbackBeginReceive 的回呼,以取得作業完成的通知。 請注意,如果基礎網路堆疊以同步方式完成作業,則會在呼叫 BeginReceive期間內嵌執行回呼。 在此情況下, CompletedSynchronously 傳回 IAsyncResult 的 屬性會設定為 true
,以指出方法已同步完成。
AsyncState使用 的 IAsyncResult 屬性,取得傳遞至 BeginReceive 方法的狀態物件。
異步 BeginReceive 操作必須藉由呼叫 EndReceive 方法來完成。 一般而言,委派會叫 AsyncCallback 用 方法。 EndReceive 將會封鎖呼叫線程,直到作業完成為止。
Socket關閉 以取消擱置BeginReceive的 。 Close在異步操作進行時呼叫 方法時,會呼叫提供給 方法的BeginReceive回呼。 方法的後續呼叫EndReceive會在 .NET 7) 或 SocketException .NET 7+) 上的 (之前擲回 ObjectDisposedException (,以指出作業已取消。
注意
如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。
注意
當該線程結束時,由指定線程起始的所有 I/O 都會取消。 如果線程在作業完成之前結束,暫止的異步操作可能會失敗。
注意
state
是使用者定義類別的具現化。
注意
在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤。
注意
系統會快 Socket 取異步方法 (安全性內容、模擬使用者和呼叫內容) 的執行內容。 在第一次使用特定內容 (特定異步 Socket 方法、特定 Socket 實例和特定回呼) 之後,該內容的後續使用將會看到效能改善。
另請參閱
- EndAccept(IAsyncResult)
- AsyncCallback
- Connect(EndPoint)
- BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- 做為回呼方法,委派封送處理
- 非同步用戶端通訊端範例
- 非同步伺服器通訊端範例