用於對遠端主機發起非同步 TCP 連線,避免阻塞主執行緒。
public IAsyncResult BeginConnect(EndPoint remoteEP, AsyncCallback callback, object state);
public IAsyncResult BeginConnect(IPAddress address, int port, AsyncCallback callback, object state);
public IAsyncResult BeginConnect(IPAddress[] address, int port, AsyncCallback callback, object state);
public IAsyncResult BeginConnect(string host, int port, AsyncCallback callback, object state);
AsyncCallback 委派,連線完成時由執行緒池呼叫。state 可傳遞自訂物件(如 Socket 本身)供回呼使用。public Socket EndConnect(IAsyncResult asyncResult);
Socket(若為用戶端即為原 Socket)。SocketException。public IAsyncResult BeginSend(
byte[] buffer, int offset, int size, SocketFlags socketFlags,
AsyncCallback callback, object state);
| 參數 | 說明 | |
|---|---|---|
| buffer | 發送緩衝區 | |
| offset | 緩衝區起始位移 | |
| size | 欲發送位元組數 | |
| socketFlags | SocketFlags 列舉組合(如 None, Partial) |
| 模式 | 執行流程 | 適用場景 |
|---|---|---|
| 同步 | 主執行緒呼叫方法 → 等待完成 → 繼續下一行 | 簡單工具、低併發 |
| 非同步 | 主執行緒發起請求 → 立即返回 → 完成時由 ThreadPool 呼叫回呼 | 高併發伺服器、UI 應用 |
非同步模式下,發起與完成是平行執行,大幅提升吞吐量與回應性,但程式碼複雜度較高(回呼地獄),現代開發建議改用 async/await 搭配 SocketAsyncEventArgs 或 NetworkStream。