Socket.BeginSend 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
非同步傳送資料至已連接的 Socket。
多載
BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)
- 來源:
- Socket.cs
- 來源:
- Socket.cs
- 來源:
- Socket.cs
非同步傳送資料至已連接的 Socket。
public:
IAsyncResult ^ BeginSend(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
member this.BeginSend : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (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
物件,包含這個要求的狀態資訊。
傳回
參考非同步傳送的 IAsyncResult。
例外狀況
buffers
為 null
。
buffers
是空的。
.NET Framework 和 .NET 5 和更早版本:嘗試存取套接字時發生錯誤。 請參閱以下註解章節。
備註
重要
這是相容性 API。 不建議使用 APM (Begin*
和 End*
) 方法來進行新的開發。 請改用型對 Task
等專案。
您可以傳遞實作 AsyncCallbackBeginSend 的回呼,以取得作業完成的通知。 請注意,如果基礎網路堆疊以同步方式完成作業,則會在呼叫 BeginSend期間內嵌執行回呼。 在此情況下, CompletedSynchronously 傳回 IAsyncResult 的 屬性會設定為 true
,以指出方法已同步完成。
AsyncState使用 的 IAsyncResult 屬性,取得傳遞至 BeginSend 方法的狀態物件。
異步 BeginSend 操作必須藉由呼叫 EndSend 方法來完成。 一般而言,委派會叫 AsyncCallback 用 方法。 EndSend 將會封鎖呼叫線程,直到作業完成為止。
雖然適用於連線導向通訊協定, BeginSend 但也適用於無連線通訊協定,前提是您先呼叫 Connect 或 BeginConnect 方法來建立默認遠端主機。 如果您使用無連線通訊協定,並計劃將資料傳送至數個不同的主機,您應該使用 BeginSendTo。 即使您已使用 建立預設遠端主機Connect,還是可以使用 BeginSendTo 。 您也可以在呼叫 BeginSend 之前變更預設遠端主機,方法是對 或 BeginConnect進行另一個呼叫Connect。 使用無連線通訊協定時,您也必須確定緩衝區的大小不會超過基礎服務提供者的封包大小上限。 如果這樣做,數據報將不會傳送,而且 BeginSend 會擲回 SocketException。
如果您將旗標指定 DontRoute 為 socketflags
參數,則不會路由傳送您傳送的數據。
注意
如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。
注意
當該線程結束時,由指定線程起始的所有 I/O 都會取消。 如果線程在作業完成之前結束,暫止的異步操作可能會失敗。
注意
state
是使用者定義類別的具現化。
注意
順利完成傳送並不會指出已成功傳遞數據。 如果傳輸系統內沒有可用的緩衝區空間來保存要傳輸的數據,除非套接字已置於非封鎖模式,否則傳送將會封鎖。
注意
在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤。
注意
系統會快 Socket 取異步方法 (安全性內容、模擬使用者和呼叫內容) 的執行內容。 在第一次使用特定內容 (特定異步 Socket 方法、特定 Socket 實例和特定回呼) 之後,該內容的後續使用將會看到效能改善。
另請參閱
適用於
BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)
- 來源:
- Socket.cs
- 來源:
- Socket.cs
- 來源:
- Socket.cs
非同步傳送資料至已連接的 Socket。
public:
IAsyncResult ^ BeginSend(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? BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
member this.BeginSend : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (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
物件,包含這個要求的狀態資訊。
傳回
參考非同步傳送的 IAsyncResult。
例外狀況
buffers
為 null
。
buffers
是空的。
.NET Framework 和 .NET 5 和更早版本:嘗試存取套接字時發生錯誤。 請參閱以下註解章節。
備註
重要
這是相容性 API。 不建議使用 APM (Begin*
和 End*
) 方法來進行新的開發。 請改用型對 Task
等專案。
您可以傳遞實作 AsyncCallbackBeginSend 的回呼,以取得作業完成的通知。 請注意,如果基礎網路堆疊以同步方式完成作業,則會在呼叫 BeginSend期間內嵌執行回呼。 在此情況下, CompletedSynchronously 傳回 IAsyncResult 的 屬性會設定為 true
,以指出方法已同步完成。
AsyncState使用 的 IAsyncResult 屬性,取得傳遞至 BeginSend 方法的狀態物件。
異步 BeginSend 操作必須藉由呼叫 EndSend 方法來完成。 一般而言,委派會叫 AsyncCallback 用 方法。 EndSend 將會封鎖呼叫線程,直到作業完成為止。
雖然適用於連線導向通訊協定, BeginSend 但也適用於無連線通訊協定,前提是您先呼叫 Connect 或 BeginConnect 方法來建立默認遠端主機。 如果您使用無連線通訊協定,並計劃將資料傳送至數個不同的主機,您應該使用 BeginSendTo。 即使您已使用 建立預設遠端主機Connect,還是可以使用 BeginSendTo 。 您也可以在呼叫 BeginSend 之前變更預設遠端主機,方法是對 或 BeginConnect進行另一個呼叫Connect。 使用無連線通訊協定時,您也必須確定緩衝區的大小不會超過基礎服務提供者的封包大小上限。 如果這樣做,數據報將不會傳送,而且 BeginSend 會擲回 SocketException。
如果您將旗標指定 DontRoute 為 socketflags
參數,則不會路由傳送您傳送的數據。
注意
如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。
注意
當該線程結束時,由指定線程起始的所有 I/O 都會取消。 如果線程在作業完成之前結束,暫止的異步操作可能會失敗。
注意
state
是使用者定義類別的具現化。
注意
順利完成傳送並不會指出已成功傳遞數據。 如果傳輸系統內沒有可用的緩衝區空間來保存要傳輸的數據,除非套接字已置於非封鎖模式,否則傳送將會封鎖。
注意
在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤。
注意
系統會快 Socket 取異步方法 (安全性內容、模擬使用者和呼叫內容) 的執行內容。 在第一次使用特定內容 (特定異步 Socket 方法、特定 Socket 實例和特定回呼) 之後,該內容的後續使用將會看到效能改善。
另請參閱
適用於
BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- 來源:
- Socket.cs
- 來源:
- Socket.cs
- 來源:
- Socket.cs
非同步傳送資料至已連接的 Socket。
public:
IAsyncResult ^ BeginSend(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
member this.BeginSend : byte[] * int * int * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (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
物件,包含這個要求的狀態資訊。
傳回
參考非同步傳送的 IAsyncResult。
例外狀況
buffer
為 null
。
.NET Framework 和 .NET 5 和更早版本:嘗試存取套接字時發生錯誤。 請參閱以下註解章節。
offset
小於 0。
-或-
offset
小於 buffer
的長度。
-或-
size
小於 0。
-或-
size
大於 buffer
的長度減去 offset
參數的值。
備註
重要
這是相容性 API。 不建議使用 APM (Begin*
和 End*
) 方法來進行新的開發。 請改用型對 Task
等專案。
您可以傳遞實作 AsyncCallbackBeginSend 的回呼,以取得作業完成的通知。 請注意,如果基礎網路堆疊以同步方式完成作業,則會在呼叫 BeginSend期間內嵌執行回呼。 在此情況下, CompletedSynchronously 傳回 IAsyncResult 的 屬性會設定為 true
,以指出方法已同步完成。
AsyncState使用 的 IAsyncResult 屬性,取得傳遞至 BeginSend 方法的狀態物件。
異步 BeginSend 操作必須藉由呼叫 EndSend 方法來完成。 一般而言,委派會叫 AsyncCallback 用 方法。 EndSend 將會封鎖呼叫線程,直到作業完成為止。
雖然適用於連線導向通訊協定, BeginSend 但也適用於無連線通訊協定,前提是您先呼叫 Connect 或 BeginConnect 方法來建立默認遠端主機。 如果您使用無連線通訊協定,並計劃將資料傳送至數個不同的主機,您應該使用 BeginSendTo。 即使您已使用 建立預設遠端主機Connect,還是可以使用 BeginSendTo 。 您也可以在呼叫 BeginSend 之前變更預設遠端主機,方法是對 或 BeginConnect進行另一個呼叫Connect。 使用無連線通訊協定時,您也必須確定緩衝區的大小不會超過基礎服務提供者的封包大小上限。 如果這樣做,數據報將不會傳送,而且 BeginSend 會擲回 SocketException。
如果您將旗標指定 DontRoute 為 socketflags
參數,則不會路由傳送您傳送的數據。
注意
如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。
注意
當該線程結束時,由指定線程起始的所有 I/O 都會取消。 如果線程在作業完成之前結束,暫止的異步操作可能會失敗。
注意
state
是使用者定義類別的具現化。
注意
順利完成傳送並不會指出已成功傳遞數據。 如果傳輸系統內沒有可用的緩衝區空間來保存要傳輸的數據,除非套接字已置於非封鎖模式,否則傳送將會封鎖。
注意
在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤。
注意
系統會快 Socket 取異步方法 (安全性內容、模擬使用者和呼叫內容) 的執行內容。 在第一次使用特定內容 (特定異步 Socket 方法、特定 Socket 實例和特定回呼) 之後,該內容的後續使用將會看到效能改善。
另請參閱
適用於
BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)
- 來源:
- Socket.cs
- 來源:
- Socket.cs
- 來源:
- Socket.cs
非同步傳送資料至已連接的 Socket。
public:
IAsyncResult ^ BeginSend(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? BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
member this.BeginSend : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (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
物件,包含這個要求的狀態資訊。
傳回
參考非同步傳送的 IAsyncResult。
例外狀況
buffer
為 null
。
.NET Framework 和 .NET 5 和更早版本:嘗試存取套接字時發生錯誤。 請參閱以下註解章節。
offset
小於 0。
-或-
offset
小於 buffer
的長度。
-或-
size
小於 0。
-或-
size
大於 buffer
的長度減去 offset
參數的值。
備註
重要
這是相容性 API。 不建議使用 APM (Begin*
和 End*
) 方法來進行新的開發。 請改用型對 Task
等專案。
您可以傳遞實作 AsyncCallbackBeginSend 的回呼,以取得作業完成的通知。 請注意,如果基礎網路堆疊以同步方式完成作業,則會在呼叫 BeginSend期間內嵌執行回呼。 在此情況下, CompletedSynchronously 傳回 IAsyncResult 的 屬性會設定為 true
,以指出方法已同步完成。
AsyncState使用 的 IAsyncResult 屬性,取得傳遞至 BeginSend 方法的狀態物件。
異步 BeginSend 操作必須藉由呼叫 EndSend 方法來完成。 一般而言,委派會叫 AsyncCallback 用 方法。 EndSend 將會封鎖呼叫線程,直到作業完成為止。
雖然適用於連線導向通訊協定, BeginSend 但也適用於無連線通訊協定,前提是您先呼叫 Connect 或 BeginConnect 方法來建立默認遠端主機。 如果您使用無連線通訊協定,並計劃將資料傳送至數個不同的主機,您應該使用 BeginSendTo。 即使您已使用 建立預設遠端主機Connect,還是可以使用 BeginSendTo 。 您也可以在呼叫 BeginSend 之前變更預設遠端主機,方法是對 或 BeginConnect進行另一個呼叫Connect。 使用無連線通訊協定時,您也必須確定緩衝區的大小不會超過基礎服務提供者的封包大小上限。 如果這樣做,數據報將不會傳送,而且 BeginSend 會擲回 SocketException。
如果您將旗標指定 DontRoute 為 socketflags
參數,則不會路由傳送您傳送的數據。
注意
如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。
注意
當該線程結束時,由指定線程起始的所有 I/O 都會取消。 如果線程在作業完成之前結束,暫止的異步操作可能會失敗。
注意
state
是使用者定義類別的具現化。
注意
順利完成傳送並不會指出已成功傳遞數據。 如果傳輸系統內沒有可用的緩衝區空間來保存要傳輸的數據,除非套接字已置於非封鎖模式,否則傳送將會封鎖。
注意
在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤。
注意
系統會快 Socket 取異步方法 (安全性內容、模擬使用者和呼叫內容) 的執行內容。 在第一次使用特定內容 (特定異步 Socket 方法、特定 Socket 實例和特定回呼) 之後,該內容的後續使用將會看到效能改善。