Socket.BeginSend 方法

定義

非同步傳送資料至已連接的 Socket

多載

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

非同步傳送資料至已連接的 Socket

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

非同步傳送資料至已連接的 Socket

BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

非同步傳送資料至已連接的 Socket

BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

非同步傳送資料至已連接的 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

例外狀況

buffersnull

buffers 是空的。

.NET Framework 和 .NET 5 和更早版本:嘗試存取套接字時發生錯誤。 請參閱以下註解章節。

備註

重要

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

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

異步 BeginSend 操作必須藉由呼叫 EndSend 方法來完成。 一般而言,委派會叫 AsyncCallback 用 方法。 EndSend 將會封鎖呼叫線程,直到作業完成為止。

雖然適用於連線導向通訊協定, BeginSend 但也適用於無連線通訊協定,前提是您先呼叫 ConnectBeginConnect 方法來建立默認遠端主機。 如果您使用無連線通訊協定,並計劃將資料傳送至數個不同的主機,您應該使用 BeginSendTo。 即使您已使用 建立預設遠端主機Connect,還是可以使用 BeginSendTo 。 您也可以在呼叫 BeginSend 之前變更預設遠端主機,方法是對 或 BeginConnect進行另一個呼叫Connect。 使用無連線通訊協定時,您也必須確定緩衝區的大小不會超過基礎服務提供者的封包大小上限。 如果這樣做,數據報將不會傳送,而且 BeginSend 會擲回 SocketException

如果您將旗標指定 DontRoutesocketflags 參數,則不會路由傳送您傳送的數據。

注意

如果您收到 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

例外狀況

buffersnull

buffers 是空的。

.NET Framework 和 .NET 5 和更早版本:嘗試存取套接字時發生錯誤。 請參閱以下註解章節。

備註

重要

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

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

異步 BeginSend 操作必須藉由呼叫 EndSend 方法來完成。 一般而言,委派會叫 AsyncCallback 用 方法。 EndSend 將會封鎖呼叫線程,直到作業完成為止。

雖然適用於連線導向通訊協定, BeginSend 但也適用於無連線通訊協定,前提是您先呼叫 ConnectBeginConnect 方法來建立默認遠端主機。 如果您使用無連線通訊協定,並計劃將資料傳送至數個不同的主機,您應該使用 BeginSendTo。 即使您已使用 建立預設遠端主機Connect,還是可以使用 BeginSendTo 。 您也可以在呼叫 BeginSend 之前變更預設遠端主機,方法是對 或 BeginConnect進行另一個呼叫Connect。 使用無連線通訊協定時,您也必須確定緩衝區的大小不會超過基礎服務提供者的封包大小上限。 如果這樣做,數據報將不會傳送,而且 BeginSend 會擲回 SocketException

如果您將旗標指定 DontRoutesocketflags 參數,則不會路由傳送您傳送的數據。

注意

如果您收到 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

參數

buffer
Byte[]

Byte 型別的陣列,包含要傳送的資料。

offset
Int32

buffer 參數中要開始傳送資料的以零起始的位置。

size
Int32

要傳送的位元組數。

socketFlags
SocketFlags

SocketFlags 值的位元組合。

callback
AsyncCallback

AsyncCallback 委派。

state
Object

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

傳回

參考非同步傳送的 IAsyncResult

例外狀況

buffernull

僅限 .NET Framework 和 .NET 5 和更早版本:嘗試存取套接字時發生錯誤。 請參閱以下註解章節。

offset 小於 0。

-或-

offset 小於 buffer 的長度。

-或-

size 小於 0。

-或-

size 大於 buffer 的長度減去 offset 參數的值。

備註

重要

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

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

BeginSend異步操作必須藉由呼叫 EndSend 方法來完成。 一般而言,委派會叫用 AsyncCallback 方法。 EndSend 將會封鎖呼叫線程,直到作業完成為止。

雖然適用於連線導向的通訊協定, BeginSend 但也適用於無連線通訊協定,前提是您第一次呼叫 ConnectBeginConnect 方法來建立預設遠端主機。 如果您使用無連線通訊協定,並計劃將資料傳送至數個不同的主機,您應該使用 BeginSendToBeginSendTo即使您已使用 建立預設遠端主機Connect,也可以使用 。 您也可以在呼叫 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

參數

buffer
Byte[]

Byte 型別的陣列,包含要傳送的資料。

offset
Int32

buffer 參數中要開始傳送資料的以零起始的位置。

size
Int32

要傳送的位元組數。

socketFlags
SocketFlags

SocketFlags 值的位元組合。

errorCode
SocketError

SocketError 物件,儲存通訊端錯誤。

callback
AsyncCallback

AsyncCallback 委派。

state
Object

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

傳回

參考非同步傳送的 IAsyncResult

例外狀況

buffernull

僅限 .NET Framework 和 .NET 5 和更早版本:嘗試存取套接字時發生錯誤。 請參閱以下註解章節。

offset 小於 0。

-或-

offset 小於 buffer 的長度。

-或-

size 小於 0。

-或-

size 大於 buffer 的長度減去 offset 參數的值。

備註

重要

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

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

BeginSend異步操作必須藉由呼叫 EndSend 方法來完成。 一般而言,委派會叫用 AsyncCallback 方法。 EndSend 將會封鎖呼叫線程,直到作業完成為止。

雖然適用於連線導向的通訊協定, BeginSend 但也適用於無連線通訊協定,前提是您第一次呼叫 ConnectBeginConnect 方法來建立預設遠端主機。 如果您使用無連線通訊協定,並計劃將資料傳送至數個不同的主機,您應該使用 BeginSendToBeginSendTo即使您已使用 建立預設遠端主機Connect,也可以使用 。 您也可以在呼叫 BeginSend 之前變更預設遠端主機,方法是對 或 BeginConnect進行另一個呼叫Connect。 使用無連線通訊協定時,您也必須確定緩衝區的大小不會超過基礎服務提供者的封包大小上限。 如果這樣做,將不會傳送數據報,而且 BeginSend 會擲回 SocketException

如果您將 DontRoute 旗標指定為 socketflags 參數,將不會路由傳送您傳送的數據。

注意

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

注意

當該線程結束時,指定的線程所起始的所有 I/O 都會取消。 如果線程在作業完成之前結束,暫止的異步操作可能會失敗。

注意

state 是使用者定義類別的具現化。

注意

成功完成傳送並不表示已成功傳遞數據。 如果傳輸系統內沒有可用的緩衝區空間來保存要傳輸的數據,除非套接字處於非封鎖模式,否則傳送將會封鎖。

注意

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

注意

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

另請參閱

適用於