Windows.Networking.Sockets 命名空間
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供用於網路通訊的通訊端和 WebSocket 類別,以及用於 UWP app 背景中所接收之即時網路通知的類別。
類別
結構
BandwidthStatistics |
表示使用StreamSocket、StreamWebSocket 或 MessageWebSocket物件進行網路資料傳輸的頻寬資訊。 |
RoundTripTimeStatistics |
表示 StreamSocket 物件的來回時間資訊。 |
介面
IControlChannelTriggerEventDetails |
由背景訊息代理程式基礎結構具現化的物件,用來區分控制通道觸發程式。 注意 Windows Phone不支援此介面。 |
IControlChannelTriggerResetEventDetails |
由 ControlChannelReset事件之背景訊息代理程式基礎結構具現化的物件,表示已重設ControlChannelTrigger。 注意 Windows Phone不支援此介面。 |
IWebSocket |
提供網路通訊的存取權,允許使用 WebSocket 進行讀取和寫入。 |
IWebSocketControl |
提供 IWebSocket 物件上的通訊端控制資料。 |
IWebSocketControl2 |
提供 IWebSocket 物件上的通訊端控制資料。 此介面會使用額外的屬性來擴充 IWebSocketControl 介面。 |
IWebSocketInformation |
提供 IWebSocket 物件的通訊端資訊。 |
IWebSocketInformation2 |
提供 IWebSocket 物件的通訊端資訊。 此介面會使用其他屬性來擴充 IWebSocketInformation 。 |
列舉
ControlChannelTriggerResetReason |
注意 Windows Phone不支援此列舉。 |
ControlChannelTriggerResourceType |
控制通道觸發程式所使用的資源類型。 注意 Windows Phone不支援此列舉。 |
ControlChannelTriggerStatus |
指定系統是否能夠完成 ControlChannelTrigger 物件的設定,以供 Windows.Networking.Sockets 和相關命名空間中的類別專案使用。 注意 Windows Phone不支援此列舉。 |
MessageWebSocketReceiveMode |
描述用戶端將接受的訊息類型。 |
SocketActivityConnectedStandbyAction |
指出當系統進入線上狀態時,使用通訊端代理服務的應用程式是否可以接收封包。 |
SocketActivityKind |
描述要傳送至通訊端代理程式或從通訊端代理程式傳送的通訊端物件種類。 |
SocketActivityTriggerReason |
SocketActivityTrigger發生的原因。 |
SocketErrorStatus |
指定通訊端作業的狀態值。 |
SocketMessageType |
指定 MessageWebSocket 物件的訊息類型。 |
SocketProtectionLevel |
指定要在 StreamSocket 物件上使用的加密層級。 |
SocketQualityOfService |
指定 DatagramSocket 或 StreamSocket 物件的服務品質。 |
SocketSslErrorSeverity |
SSL 連線上發生的錯誤類別。 |
備註
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 命名空間有便利的協助程式方法及列舉,在使用通訊端和 WebSocket 時用來處理錯誤。 這對於在您的應用程式中以不同的方式處理特定網路例外狀況時很有用。 應用程式也可以使用參數驗證錯誤例外狀況中的 HRESULT ,深入瞭解造成例外狀況之錯誤的詳細資訊。
如需可能例外狀況以及如何處理例外狀況的詳細資訊,請參閱 處理網路應用程式中的例外狀況。
搭配鄰近性、Wi-Fi Direct 和藍牙使用 StreamSocket
您的應用程式可以使用 StreamSocket 進行接近範圍內裝置之間的網路連線。 Windows.Networking.Proximity命名空間中的類別支援使用 StreamSocket連線到使用藍牙或Wi-Fi Direct 的鄰近裝置的網路連線。 Windows.Networking.Proximity命名空間中的PeerFinder和相關類別可讓您的應用程式在附近的裝置上探索應用程式的另一個實例。 PeerFinder.FindAllPeersAsync方法會流覽在無線範圍內執行相同應用程式的對等電腦。 PeerFinder.ConnectAsync方法會傳回連線的StreamSocket,您的應用程式可用來將網路資料與附近的對等應用程式傳輸。 如需詳細資訊,請參閱 支援鄰近性和點選、 Windows.Networking.Proximity、 PeerFinder和 鄰近範例。
您的應用程式也可以使用 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.Devices.WiFiDirect 和 WiFiDirectDevice。
藍牙使用藍牙服務識別碼作為 StreamSocket 連線的端點,而不是主機名稱或 IP 位址。 若要搭配藍牙使用 StreamSocket ,必須在應用程式資訊清單中設定 bluetooth.rfcomm 裝置功能。 如需詳細資訊,請參閱 Windows.Devices.Bluetooth.Rfcomm 命名空間、 如何指定藍牙的裝置功能,以及 藍牙 Rfcomm 聊天範例。
搭配使用 DatagramSocket 與 Wi-Fi Direct
您的應用程式可以使用 DatagramSocket 在 Windows.Devices.WiFiDirect 命名空間中使用類別,在使用 Wi-Fi Direct 的裝置之間進行網路資料傳輸。 WiFiDirectDevice類別可用來尋找具有Wi-Fi Direct (WFD) 裝置的其他裝置。 WiFiDirectDevice.GetDeviceSelector方法會取得附近 WFD 裝置的裝置識別碼。 取得鄰近 WFD 裝置的參考之後,您可以呼叫 WiFiDirectDevice.GetConnectionEndpointPairs 方法來取得 EndpointPair 物件。 DatagramSocket類別上的方法可用來將資料傳送和接收至EndpointPair物件。 如需詳細資訊,請參閱 Windows.Devices.WiFiDirect 和 WiFiDirectDevice。
使用網路觸發程式
Windows.Networking.Sockets 命名空間提供兩種觸發程式,可供您的應用程式用於背景網路: ControlChannelTrigger 和 SocketActivityTrigger。
控制通道觸發程序
ControlChannelTrigger可讓您的應用程式在背景時接收網路資料封包和網路保留。 這可讓您的應用程式提供 Windows.Networking.Sockets 命名空間中 StreamSocket 的即時狀態和網路通知,以及相關命名空間中的其他網路類別。
例如,長時間執行的網路應用程式會使用網路觸發程式 (,例如電子郵件應用程式) ,以將網路和系統資源使用量降到最低。 網路觸發程式可讓應用程式卸載為低電源模式一段時間,讓網路連線維持不變,但處於低電源狀態。 您可以設定持續間隔,讓系統知道應用程式何時應該喚醒。 您也可以設定觸發程式,以在收到應用程式的封包時收到通知。 這些通知功能可在行動裝置上使用長時間執行的網路應用程式時,協助延長電池使用時間。
如需詳細資訊,請參閱 ControlChannelTrigger 類別和 如何設定背景連線選項。
通訊端活動觸發程式
SocketActivityTrigger可讓您的應用程式在非作用中 (時接收網路資料封包,即使它已暫停或終止) ,即使它目前未載入記憶體中也一樣。 它特別提供給提供網路服務的應用程式,其中應用程式會透過 DNS-SD 註冊為服務提供者,然後變成非使用中。 SocketActivityTrigger會在用戶端連線到服務時通知應用程式,讓服務可以啟動並提供所要求的服務。 SocketActivityTrigger 也可用於其他情況。 每當您想要啟用您的應用程式以回應接收的網路流量時,請使用它。
如果您的應用程式使用通訊端活動觸發程式,您必須在應用程式資訊清單中指定 pushNotifications 功能。
選擇網路觸發程序
在某些情況下,任一觸發程序均適用。 當您選擇要在您的 app 中使用的觸發程序時,請考量下列建議。
- 如果您使用 IXMLHTTPRequest2、System.Net.Http.HttpClient 或 System.Net.Http.HttpClientHandler,您必須使用 ControlChannelTrigger。
- 如果您使用已啟用推送功能的 StreamSockets,偏好 SocketActivityTrigger。 它可讓系統在未主動使用連線時釋放記憶體並減少電源需求。
- 如果您想要在應用程式未主動維護網路要求時,將應用程式的記憶體使用量降到最低,偏好 使用 SocketActivityTrigger。
- 如果您想要讓應用程式能夠在系統處於「連線待命」模式時接收資料、請使用 SocketActivityTrigger。
在 Windows Server 2012 上使用通訊端和 WebSocket
在 Windows Server 2012 和 Windows Server 2012 R2 上,除非啟用 Media Foundation 功能,否則實作 Windows.Networking.Sockets 命名空間中大部分類別的 Windows.Networking.dll 將無法載入。 因此,如果停用 Media Foundation 功能,則 Windows.Networking.Sockets 命名空間中使用通訊端或 WebSocket 類別的應用程式將會失敗。 Windows Server 2012 或 Windows Server 2012 R2 會安裝並停用 Media Foundation 功能。
您可以使用 伺服器管理員 或在命令提示字元或腳本中輸入下列文字,在 Windows Server 2012 或 Windows Server 2012 R2 上啟用 Media Foundation 功能:
dism /online /enable-feature /featurename:ServerMediaFoundation
啟用 Media Foundation 功能之後,系統會提示使用者重新開機。 重新開機電腦之後,Windows.Networking.Sockets 命名空間中的通訊端和 WebSocket 類別會如預期般運作。
搭配網路隔離使用通訊端和 WebSocket
Windows 8 中的網路隔離可讓您完全控制 UWP 應用程式的安全性設定檔。
網路隔離可讓您藉由選擇適當的功能,定義每個應用程式所需的網路存取。 沒有適當功能集的應用程式無法使用特定網路類型 (網際網路或家用/工作網路) ,以及輸出用戶端起始要求 (特定網路要求,或) 輸入未經要求的要求和輸出用戶端起始的要求。 強制執行網路隔離的能力可確保即使應用程式遭到入侵,應用程式只能使用 (網路類型和網路要求的功能,例如) 應用程式被授與為功能。 這可大幅降低對其他應用程式和作業系統的可能影響。
Windows 8 會主動強制執行網路隔離。 呼叫方法或任何對 Windows.Networking.Sockets 命名空間中屬性的存取, (或需要網路存取的相關命名空間,如果尚未啟用適當的網路功能,) 可能會失敗。
建立應用程式時,會在應用程式資訊清單中設定應用程式的網路功能。 當您開發應用程式時,通常會使用 Visual Studio 新增網路功能。 您也可以使用文字編輯器,在應用程式資訊清單檔案中手動設定它們。
如需網路隔離的詳細資訊,請參閱 如何設定網路隔離功能。
另請參閱
- PeerFinder
- WiFiDirectDevice
- Windows.Devices.Bluetooth.Rfcomm
- Windows.Devices.WiFiDirect
- Windows.Networking
- Windows.Networking.Connectivity
- Windows.Networking.Proximity
- 新增對網路的支援
- 使用通訊端連線
- WebSocket
- 處理網路應用程式中的例外狀況
- 如何設定網路隔離功能
- 如何設定背景連線選項
- 如何指定藍牙的裝置功能
- 支援鄰近性和點選
- 針對網路連線進行疑難排解和偵錯
- SetSocketMediaStreamingMode
- 藍牙 Rfcomm 聊天範例
- DatagramSocket 範例
- ControlChannelTrigger StreamWebSocket 範例
- ControlChannelTrigger TCP 通訊端範例
- 鄰近性範例
- StreamSocket 範例
- DatagramSocket 範例
- WebSocket 範例
- StreamSocket 範例
- Wi-Fi Direct範例
- Wi-Fi Direct服務範例 (Windows 10)
- 通訊端活動觸發程式資料流程通訊端範例