Socket.EndSend 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
結束暫止的非同步傳送。
多載
EndSend(IAsyncResult) |
結束暫止的非同步傳送。 |
EndSend(IAsyncResult, SocketError) |
結束暫止的非同步傳送。 |
EndSend(IAsyncResult)
- 來源:
- Socket.cs
- 來源:
- Socket.cs
- 來源:
- Socket.cs
結束暫止的非同步傳送。
public:
int EndSend(IAsyncResult ^ asyncResult);
public int EndSend (IAsyncResult asyncResult);
member this.EndSend : IAsyncResult -> int
Public Function EndSend (asyncResult As IAsyncResult) As Integer
參數
- asyncResult
- IAsyncResult
IAsyncResult,存放這個非同步作業的狀態資訊。
傳回
如果成功,則將位元組數目傳送至 Socket,否則,則產生一個無效的 Socket 錯誤。
例外狀況
asyncResult
為 null
。
asyncResult
不會經由對 BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) 方法的呼叫傳回。
先前已針對非同步傳送呼叫 EndSend(IAsyncResult)。
僅限 .NET Framework、.NET Core 和 .NET 5-6:Socket已關閉 。
備註
重要
這是相容性 API。 不建議使用 APM (Begin*
和 End*
) 方法來進行新的開發。 請改用型對 Task
等專案。
EndSend 完成 由 BeginSend啟動的作業。 您必須傳遞 IAsyncResult 比 BeginSend 對呼叫所建立的 。
如果您使用無連線通訊協定, EndSend 將會封鎖直到傳送數據報為止。 如果您使用連接導向通訊協定,將會封鎖直到 EndSend 傳送部分緩衝區為止。 如果的 EndSend 傳回值表示緩衝區未完全傳送,請再次呼叫 BeginSend 方法,修改緩衝區以保存未傳送的數據。
不保證您傳送的數據會立即出現在網路上。 為了提升網路效率,基礎系統可能會延遲傳輸,直到收集大量的傳出數據為止。 方法成功完成 BeginSend 表示基礎系統有空間可緩衝處理網路傳送的數據。
注意
如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。
注意
當該線程結束時,由指定線程起始的所有 I/O 都會取消。 如果線程在作業完成之前結束,暫止的異步操作可能會失敗。
注意
順利完成傳送並不會指出已成功傳遞數據。 如果傳輸系統內沒有可用的緩衝區空間來保存要傳輸的數據,除非套接字已置於非封鎖模式,否則傳送將會封鎖。
注意
在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤。
另請參閱
- BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- AsyncState
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- NoDelay
適用於
EndSend(IAsyncResult, SocketError)
- 來源:
- Socket.cs
- 來源:
- Socket.cs
- 來源:
- Socket.cs
結束暫止的非同步傳送。
public:
int EndSend(IAsyncResult ^ asyncResult, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int EndSend (IAsyncResult asyncResult, out System.Net.Sockets.SocketError errorCode);
member this.EndSend : IAsyncResult * SocketError -> int
Public Function EndSend (asyncResult As IAsyncResult, ByRef errorCode As SocketError) As Integer
參數
- asyncResult
- IAsyncResult
IAsyncResult,存放這個非同步作業的狀態資訊。
- errorCode
- SocketError
SocketError 物件,儲存通訊端錯誤。
傳回
如果成功,則將位元組數目傳送至 Socket,否則,則產生一個無效的 Socket 錯誤。
例外狀況
asyncResult
為 null
。
asyncResult
不會經由對 BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) 方法的呼叫傳回。
先前已針對非同步傳送呼叫 EndSend(IAsyncResult)。
僅限 .NET Framework、.NET Core 和 .NET 5-6:Socket已關閉 。
備註
重要
這是相容性 API。 不建議使用 APM (Begin*
和 End*
) 方法來進行新的開發。 請改用型對 Task
等專案。
EndSend 完成 由 BeginSend啟動的作業。 您必須傳遞 IAsyncResult 比 BeginSend 對呼叫所建立的 。
如果您使用無連線通訊協定, EndSend 將會封鎖直到傳送數據報為止。 如果您使用連接導向通訊協定,將會封鎖直到 EndSend 傳送部分緩衝區為止。 如果的 EndSend 傳回值表示緩衝區未完全傳送,請再次呼叫 BeginSend 方法,修改緩衝區以保存未傳送的數據。
不保證您傳送的數據會立即出現在網路上。 為了提升網路效率,基礎系統可能會延遲傳輸,直到收集大量的傳出數據為止。 方法成功完成 BeginSend 表示基礎系統有空間可緩衝處理網路傳送的數據。
注意
如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。
注意
當該線程結束時,由指定線程起始的所有 I/O 都會取消。 如果線程在作業完成之前結束,暫止的異步操作可能會失敗。
注意
順利完成傳送並不會指出已成功傳遞數據。 如果傳輸系統內沒有可用的緩衝區空間來保存要傳輸的數據,除非套接字已置於非封鎖模式,否則傳送將會封鎖。
注意
在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤。
另請參閱
- BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- AsyncState
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- NoDelay