Windows.Networking.Sockets 命名空間

提供用於網路通訊的套接字與 WebSockets 類別,以及用於背景即時接收的網路通知的類別,適用於已封裝的 Windows 應用程式(包括 UWP 及 Windows 應用程式 SDK (WinUI 3)桌面應用程式)。

類別

名稱 Description
ControlChannelTrigger

允許在背景即時接收建立 TCP 連線並希望接收來電流量通知的物件。

在使用 ControlChannelTrigger 前,先呼叫 **BackgroundExecutionManager.RequestAccessAsync**。

DatagramSocket

支援使用 UDP 資料報套接字進行網路通訊。

關於程式碼範例,請參見 Sockets。

DatagramSocketControl

提供 DatagramSocket 物件上的 socket 控制資料。

DatagramSocketInformation

提供 DatagramSocket 物件的套接字資訊。

DatagramSocketMessageReceivedEventArgs

提供資料報套接字上的 MessageReceived 事件資料。

MessageWebSocket

支援網路通訊,允許使用 WebSocket 讀寫整則訊息。

MessageWebSocketControl

提供 MessageWebSocket 上的套接字控制資料。

MessageWebSocketInformation

提供 MessageWebSocket 上的套接字資訊。

MessageWebSocketMessageReceivedEventArgs

提供 MessageWebSocket 上接收訊息事件的資料。

ServerMessageWebSocket

支援網路通訊,允許透過網頁伺服器擁有的 WebSocket 物件來讀寫整則訊息。 你無法註冊任意的 WebSocket 連線;取而代之的是,ServerMessageWebSocket 的實例是由系統程式碼(如 Windows Device Portal (WDP)所建立。

ServerMessageWebSocketControl

提供 ServerMessageWebSocket 上的套接字控制資料。

ServerMessageWebSocketInformation

提供 ServerMessageWebSocket 上的套接字資訊。

ServerStreamWebSocket

支援網路通訊,允許透過網頁伺服器擁有的 WebSocket 物件來讀寫串流。 你無法註冊任意的 WebSocket 連線;ServerStreamWebSocket 的實例是由系統程式碼(如 Windows Device Portal WDP)建立的。

ServerStreamWebSocketInformation

提供 ServerStreamWebSocket 物件的 socket 資訊。

SocketActivityContext

在應用程式與套接字經紀服務之間轉移套接字所有權時,所關聯的上下文。

SocketActivityInformation

提供從 Socket Broker 傳送的套接字資訊。

SocketActivityTriggerDetails

由背景代理基礎設施實例化的物件,並由應用程式在 SocketActivityTrigger 發生時擷取細節。

SocketError

提供 DatagramSocket、StreamSocket 或 StreamSocketListerner 操作的套接字錯誤狀態。

StreamSocket

支援透過 TCP 或藍牙 RFCOMM 在 UWP 應用程式中使用串流接字進行網路通訊。

StreamSocketControl

提供 StreamSocket 物件上的套接字控制資料。

StreamSocketInformation

提供 StreamSocket 物件的套接字資訊。

StreamSocketListener

支援使用 TCP 串流接字或藍牙 RFCOMM 監聽進來的網路連線。

StreamSocketListenerConnectionReceivedEventArgs

提供 StreamSocketListener 物件上的 ConnectionReceived 事件資料。

StreamSocketListenerControl

提供 StreamSocketListener 物件上的套接字控制資料。

StreamSocketListenerInformation

提供 StreamSocketListener 物件的套接字資訊。

StreamWebSocket

支援網路通訊,允許使用 WebSocket 讀寫串流。

StreamWebSocketControl

提供 StreamWebSocket 物件上的套接字控制資料。

StreamWebSocketInformation

提供 StreamWebSocket 物件的套接字資訊。

WebSocketClosedEventArgs

提供 MessageWebSocket、 StreamWebSocket 或 IWebSocket 物件上的封閉事件資料。

WebSocketError

提供 MessageWebSocket 或 StreamWebSocket 物件的套接字錯誤狀態。

WebSocketKeepAlive

提供在連接的 WebSocket 上傳送 keep-alive 協定的能力。

WebSocketServerCustomValidationRequestedEventArgs

提供 WebSocket 上的 ServerCustomValidationRequested 事件資料。 此事件發生於建立新的安全連線至WebSocket時,並讓您的程式碼有機會在連線建立前對伺服器憑證進行自訂驗證。

結構

名稱 Description
BandwidthStatistics

代表使用 StreamSocket、 StreamWebSocket 或 MessageWebSocket 物件傳輸網路資料的頻寬資訊。

RoundTripTimeStatistics

代表 StreamSocket 物件的往返時間資訊。

介面

名稱 Description
IControlChannelTriggerEventDetails

由背景代理基礎設施實例化的物件,用以區分控制通道觸發器。

IControlChannelTriggerResetEventDetails

由背景代理基礎設施實例化的 ControlChannelReset 事件物件,用以表示 ControlChannelTrigger 已被重置。

IWebSocket

提供網路通訊存取,允許使用 WebSocket 進行讀寫。

IWebSocketControl

提供 IWebSocket 物件上的套接字控制資料。

IWebSocketControl2

提供 IWebSocket 物件上的套接字控制資料。 此介面擴充了 IWebSocketControl 介面,新增了一個特性。

IWebSocketInformation

提供 IWebSocket 物件上的套接字資訊。

IWebSocketInformation2

提供 IWebSocket 物件上的套接字資訊。 此介面擴充了 IWebSocketInformation 的額外屬性。

列舉

名稱 Description
ControlChannelTriggerResetReason

為什麼 ControlChannelTrigger 會被重置。

ControlChannelTriggerResourceType

控制通道觸發器所使用的資源類型。

ControlChannelTriggerStatus

指定系統是否能完成 ControlChannelTrigger 物件的設定,供 Windows 類別元素使用。網路。套接字與相關命名空間。

MessageWebSocketReceiveMode

描述客戶會接受的訊息類型。

SocketActivityConnectedStandbyAction

表示使用套接程式經紀服務的應用程式在系統進入連接待命時是否能接收封包。

SocketActivityKind

描述將傳輸至或從套接程式代理者傳輸的套接字物件類型。

SocketActivityTriggerReason

SocketActivityTrigger 發生的原因。

SocketErrorStatus

指定套接字操作的狀態值。

SocketMessageType

指定 MessageWebSocket 物件的訊息類型。

SocketProtectionLevel

指定 StreamSocket 物件所採用的加密層級。

SocketQualityOfService

指定 DatagramSocket 或 StreamSocket 物件的服務品質。

SocketSslErrorSeverity

這是 SSL 連線上發生的錯誤類別。

備註

備註

應用程式框架相容性:Windows。Networking.Sockets API 可用於 Windows 應用程式 SDK(WinUI 3)桌面應用程式及 Win32 桌面應用程式,不僅限於 UWP 應用程式。 打包桌面應用程式使用與 UWP 應用程式相同的網路能力宣告。 未封裝的桌面應用程式擁有無限制的網路存取權,且不需要宣告功能。 相關指引請參閱桌面應用程式中的呼叫 Windows 執行階段 API。

Windows。Networking.Sockets 命名空間提供使用套接字與 WebSocket 的網路類別與介面。 以下是小學課程。

  • DatagramSocket。 一個用於網路通訊的 UDP 資料報套接字。
  • StreamSocket。 一個用於透過 TCP 或使用 RFCOMM 藍牙連線進行進出網路通訊的串流接字。
  • StreamSocketListener。 一個串流套接字監聽器,用來監聽使用 RFCOMM 的 TCP 網路連線或藍牙連線。
  • MessageWebSocket。 一個基於訊息的 WebSocket,用於讀寫整則訊息以進行網路通訊。 請參見 WebSockets。
  • StreamWebSocket。 一個基於串流的 WebSocket,用於讀寫網路通訊中的串流。 請參見 WebSockets。

這些主要類別在 Windows 中也有許多相關的資訊與控制類別。Networking.Sockets 命名空間。

處理例外狀況

你必須寫程式碼來處理 Windows 中呼叫非同步方法時的例外。Networking.Sockets 命名空間。 例外可能因參數驗證錯誤、名稱解析失敗及網路錯誤而產生。 網路錯誤的例外(例如連線中斷、連線失敗及伺服器故障)隨時可能發生。 這些錯誤會導致拋出例外。 如果應用程式無法處理,例外可能會導致整個應用程式在執行時被終止。

Windows。Networking.Sockets 命名空間提供方便的輔助方法與列舉,用於處理使用套接字與 WebSockets 時的錯誤。 這對於在應用程式中處理特定網路例外的方式很有幫助。 應用程式也可以利用例外中對參數驗證錯誤的 HRESULT 來學習導致異常的更詳細資訊。

欲了解更多可能例外及如何處理例外的資訊,請參閱 「網路應用程式中的例外處理」。

使用 StreamSocket 搭配 Proximity、Wi-Fi Direct 和藍牙

你的應用程式可以使用 StreamSocket 來連接近距離內的裝置。 Windows 中的類別。Networking.Proximity 命名空間支援使用 StreamSocket 與附近使用 Bluetooth 或 Wi-Fi Direct 的裝置連線。 Windows 中的 PeerFinder 及相關類別。Networking.Proximity 命名空間讓你的應用程式能在附近裝置上發現另一個應用程式實例。 PeerFinder.FindAllPeersAsync 方法可瀏覽在無線範圍內運行相同應用程式的對等電腦。 PeerFinder.ConnectAsync 方法會回傳一個已連接的 StreamSocket,讓你的應用程式可以用來與附近的對等應用程式傳輸網路資料。 更多資訊請參閱支援接近與敲擊,Windows。Networking.Proximity、PeerFinder 以及 Proximity 樣本。

你的應用程式也可以用 StreamSocket 連接使用 Wi-Fi Direct 的裝置,並Windows中有類別。Devices.WiFiDirect 命名空間。 WiFiDirectDevice 類別可用來定位具備 Wi-Fi Direct(WFD)裝置的其他裝置。 WiFiDirectDevice.GetDeviceSelector 方法會取得附近 WFD 裝置的裝置識別碼。 一旦你有附近 WFD 裝置的參考,就可以呼叫 WiFiDirectDevice.GetConnectionEndpointPairs 方法來取得 EndpointPair 物件。 接著可以使用 StreamSocket 類別上的 ConnectAsync(EndpointPair) 或 ConnectAsync(EndpointPair, SocketProtectionLevel) 方法來建立套接字連線。 欲了解更多資訊,請參閱 Windows。裝置。WiFiDirect 和 WiFiDirectDevice。

藍牙使用藍牙服務 ID 作為 StreamSocket 連線的端點,而非主機名稱或 IP 位址。 若要使用 StreamSocket 搭配藍牙,必須在應用程式清單中設定 bluetooth.rfcomm 裝置功能。 更多資訊請參閱 Windows。Devices.Bluetooth.Rfcomm 命名空間、如何指定藍牙裝置功能,以及藍牙 Rfcomm 聊天範例。

使用 DatagramSocket 搭配 Wi-Fi Direct

你的應用程式可以用 DatagramSocket 在使用 Wi-Fi Direct 的裝置間透過 Windows 中的類別進行網路資料傳輸。Devices.WiFiDirect 命名空間。 WiFiDirectDevice 類別可用來定位具備 Wi-Fi Direct(WFD)裝置的其他裝置。 WiFiDirectDevice.GetDeviceSelector 方法會取得附近 WFD 裝置的裝置識別碼。 一旦你有附近 WFD 裝置的參考,就可以呼叫 WiFiDirectDevice.GetConnectionEndpointPairs 方法來取得 EndpointPair 物件。 DatagramSocket 類別上的方法可以用來傳送和接收資料給 EndpointPair 物件。 欲了解更多資訊,請參閱 Windows。裝置。WiFiDirect 和 WiFiDirectDevice。

使用網路觸發器

Windows。Networking.Sockets 命名空間提供兩種觸發器,供你的應用程式用於背景網路:ControlChannelTrigger 和 SocketActivityTrigger。

控制通道觸發器

ControlChannelTrigger 讓你的應用程式在背景時能接收網路資料封包和網路保活。 這讓你的應用程式能在 Windows 中即時提供 StreamSocket 的狀態和網路通知。Networking.Sockets 命名空間及相關命名空間中的其他網路類別。

網路觸發器被長期運行的網路應用程式(例如電子郵件應用程式)用來減少網路與系統資源的使用。 網路觸發器讓應用程式在一段時間內降至低功耗模式,保持網路連線完整但處於低功耗狀態。 你可以設定一個保持連線的間隔,讓系統知道應用程式何時會喚醒。 你也可以設定觸發器,當應用程式收到封包時會收到通知。 這些通知功能有助於延長在行動裝置上長時間運行的網路應用程式的電池續航力。

更多資訊請參閱 ControlChannelTrigger 類別及 如何設定背景連線選項。

插槽活動觸發

SocketActivityTrigger 讓你的應用程式在未啟用時(即使被暫停或終止),甚至在未載入記憶體時,都能接收網路資料封包。 它特別適用於提供網路服務的應用程式,該應用程式會透過 DNS-SD 註冊為服務提供者,然後變成非活躍狀態。 SocketActivityTrigger 會在用戶端連接服務時通知應用程式,讓服務能夠啟動並提供所需服務。 SocketActivityTrigger 也可以在其他情況下使用。 只要你想在收到的網路流量時啟動應用程式,就用它。

如果你的應用程式使用 socket 活動觸發器,必須在應用程式清單中指定 pushNotification 功能。

選擇網路觸發器

有些情況下,兩種扳機都適合。 在選擇在應用程式中使用哪種觸發器時,請參考以下建議。

在 Windows Server 2012 上使用 sockets 與 WebSockets

在 Windows Server 2012 和 Windows Server 2012 R2 上,這是實作大部分類別的 Windows.Networking.dll Windows。Networking.Sockets 命名空間若未啟用 Media Foundation 功能,將無法載入。 因此,在 Windows 中使用 sockets 或 WebSockets 類別的應用程式,如果關閉 Media Foundation 功能,Networking.Sockets 命名空間將會失敗。 Windows Server 2012 或 Windows Server 2012 R2 安裝時,關閉了媒體基礎功能。

媒體基礎功能可在 Windows Server 2012 或 Windows Server 2012 R2 上啟用,使用 伺服器管理員,或透過命令提示字元或腳本輸入以下文字:

dism /online /enable-feature /featurename:ServerMediaFoundation 啟用 Media Foundation 功能後,使用者會被提示重新啟動。 電腦重新啟動後,Windows 中會建立 sockets 和 WebSockets 的類別。Networking.sockets 命名空間會如預期運作。

使用具有網路隔離功能的套接字與 WebSockets

Windows 的網路隔離讓你能完全控制已封裝應用程式的安全設定檔(包括 UWP 及打包的 Windows 應用程式 SDK(WinUI 3)桌面應用程式)。

網路隔離讓你透過選擇合適的功能,定義每個應用程式所需的網路存取。 未具備適當能力集的應用程式將無法使用特定網路類型(網際網路或家庭/工作網路)及特定網路請求(由用戶端發起的外撥請求,或同時包含非請求的入站請求與用戶端發起的外撥請求)。 強制執行網路隔離的能力確保即使應用程式遭到入侵,該應用程式只能使用該應用程式被賦予的功能(例如網路類型與網路請求)。 這大幅降低了對其他應用程式及作業系統可能造成的影響。

Windows 會積極執行網路隔離。 呼叫 Windows 中的方法或任何屬性的存取。Networking.Sockets 命名空間(或需要網路存取的相關命名空間)若未啟用適當的網路功能,可能會失敗。

應用程式的網路能力會在應用程式建置時的應用程式清單中設定。 網路功能通常是在開發應用程式時使用 Visual Studio 加入的。 也可以在應用程式清單檔案中使用文字編輯器手動設定。 未封裝的桌面應用程式不受網路隔離限制,也不需要宣告網路能力。

欲了解更多網路隔離的詳細資訊,請參閱 如何配置網路隔離能力。

另請參閱