Windows.Networking.Sockets 命名空間

提供用於網路通訊的通訊端和 WebSocket 類別,以及用於 UWP app 背景中所接收之即時網路通知的類別。

類別

ControlChannelTrigger

可讓建立 TCP 連線的物件在背景收到即時通知,並想要收到連入流量的通知。

使用ControlChannelTrigger之前,請先呼叫**BackgroundExecutionManager.RequestAccessAsync**

注意

Windows Phone不支援這個類別。

DatagramSocket

支援使用 UDP 資料包通訊端的網路通訊。

如需程式碼範例,請參閱 通訊端

DatagramSocketControl

提供 DatagramSocket 物件上的通訊端控制資料。

DatagramSocketInformation

提供 DatagramSocket 物件的通訊端資訊。

DatagramSocketMessageReceivedEventArgs

提供DatagramSocketMessageReceived事件的資料。

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 物件的通訊端資訊。

SocketActivityContext

與通訊端相關聯的內容,同時在應用程式和通訊端代理服務之間傳輸通訊端的擁有權。

SocketActivityInformation

提供通訊端代理程式所傳輸通訊端的相關資訊。

SocketActivityTriggerDetails

由背景訊息代理程式基礎結構具現化的物件,並由應用程式用來擷取 SocketActivityTrigger 發生時的詳細資料。

SocketError

提供DatagramSocket、StreamSocketStreamSocketListener作業的通訊端錯誤狀態。

StreamSocket

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

StreamSocketControl

StreamSocket 物件上提供通訊端控制資料。

StreamSocketInformation

提供 StreamSocket 物件的通訊端資訊。

StreamSocketListener

支援使用 TCP 串流通訊端或藍牙 RFCOMM 接聽連入網路連線。

StreamSocketListenerConnectionReceivedEventArgs

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

StreamSocketListenerControl

StreamSocketListener 物件上提供通訊端控制資料。

StreamSocketListenerInformation

提供 StreamSocketListener 物件的通訊端資訊。

StreamWebSocket

支援網路通訊,允許使用 WebSocket 讀取和寫入資料流程。

StreamWebSocketControl

StreamWebSocket 物件上提供通訊端控制項資料。

StreamWebSocketInformation

提供 StreamWebSocket 物件的通訊端資訊。

WebSocketClosedEventArgs

提供MessageWebSocketStreamWebSocket 或 IWebSocket物件上已關閉事件的資料。

WebSocketError

提供 MessageWebSocketStreamWebSocket 物件的通訊端錯誤狀態。

WebSocketKeepAlive

提供在連線的 WebSocket 上傳送 WebSocket 通訊協定保持運作的能力。

WebSocketServerCustomValidationRequestedEventArgs

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

結構

BandwidthStatistics

表示使用StreamSocketStreamWebSocket 或 MessageWebSocket物件進行網路資料傳輸的頻寬資訊。

RoundTripTimeStatistics

表示 StreamSocket 物件的來回時間資訊。

介面

IControlChannelTriggerEventDetails

由背景訊息代理程式基礎結構具現化的物件,用來區分控制通道觸發程式。

注意

Windows Phone不支援此介面。

IControlChannelTriggerResetEventDetails

由 ControlChannelReset事件之背景訊息代理程式基礎結構具現化的物件,表示已重設ControlChannelTrigger

注意

Windows Phone不支援此介面。

IWebSocket

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

IWebSocketControl

提供 IWebSocket 物件上的通訊端控制資料。

IWebSocketControl2

提供 IWebSocket 物件上的通訊端控制資料。 此介面會使用額外的屬性來擴充 IWebSocketControl 介面。

IWebSocketInformation

提供 IWebSocket 物件的通訊端資訊。

IWebSocketInformation2

提供 IWebSocket 物件的通訊端資訊。 此介面會使用其他屬性來擴充 IWebSocketInformation

列舉

ControlChannelTriggerResetReason

重設 ControlChannelTrigger的原因。

注意

Windows Phone不支援此列舉。

ControlChannelTriggerResourceType

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

注意

Windows Phone不支援此列舉。

ControlChannelTriggerStatus

指定系統是否能夠完成 ControlChannelTrigger 物件的設定,以供 Windows.Networking.Sockets 和相關命名空間中的類別專案使用。

注意

Windows Phone不支援此列舉。

MessageWebSocketReceiveMode

描述用戶端將接受的訊息類型。

SocketActivityConnectedStandbyAction

指出當系統進入線上狀態時,使用通訊端代理服務的應用程式是否可以接收封包。

SocketActivityKind

描述要傳送至通訊端代理程式或從通訊端代理程式傳送的通訊端物件種類。

SocketActivityTriggerReason

SocketActivityTrigger發生的原因。

SocketErrorStatus

指定通訊端作業的狀態值。

SocketMessageType

指定 MessageWebSocket 物件的訊息類型。

SocketProtectionLevel

指定要在 StreamSocket 物件上使用的加密層級。

SocketQualityOfService

指定 DatagramSocketStreamSocket 物件的服務品質。

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.ProximityPeerFinder鄰近範例

您的應用程式也可以使用 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.WiFiDirectWiFiDirectDevice

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

搭配使用 DatagramSocket 與 Wi-Fi Direct

您的應用程式可以使用 DatagramSocketWindows.Devices.WiFiDirect 命名空間中使用類別,在使用 Wi-Fi Direct 的裝置之間進行網路資料傳輸。 WiFiDirectDevice類別可用來尋找具有Wi-Fi Direct (WFD) 裝置的其他裝置。 WiFiDirectDevice.GetDeviceSelector方法會取得附近 WFD 裝置的裝置識別碼。 取得鄰近 WFD 裝置的參考之後,您可以呼叫 WiFiDirectDevice.GetConnectionEndpointPairs 方法來取得 EndpointPair 物件。 DatagramSocket類別上的方法可用來將資料傳送和接收至EndpointPair物件。 如需詳細資訊,請參閱 Windows.Devices.WiFiDirectWiFiDirectDevice

使用網路觸發程式

Windows.Networking.Sockets 命名空間提供兩種觸發程式,可供您的應用程式用於背景網路: ControlChannelTriggerSocketActivityTrigger

控制通道觸發程序

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

例如,長時間執行的網路應用程式會使用網路觸發程式 (,例如電子郵件應用程式) ,以將網路和系統資源使用量降到最低。 網路觸發程式可讓應用程式卸載為低電源模式一段時間,讓網路連線維持不變,但處於低電源狀態。 您可以設定持續間隔,讓系統知道應用程式何時應該喚醒。 您也可以設定觸發程式,以在收到應用程式的封包時收到通知。 這些通知功能可在行動裝置上使用長時間執行的網路應用程式時,協助延長電池使用時間。

如需詳細資訊,請參閱 ControlChannelTrigger 類別和 如何設定背景連線選項

通訊端活動觸發程式

SocketActivityTrigger可讓您的應用程式在非作用中 (時接收網路資料封包,即使它已暫停或終止) ,即使它目前未載入記憶體中也一樣。 它特別提供給提供網路服務的應用程式,其中應用程式會透過 DNS-SD 註冊為服務提供者,然後變成非使用中。 SocketActivityTrigger會在用戶端連線到服務時通知應用程式,讓服務可以啟動並提供所要求的服務。 SocketActivityTrigger 也可用於其他情況。 每當您想要啟用您的應用程式以回應接收的網路流量時,請使用它。

如果您的應用程式使用通訊端活動觸發程式,您必須在應用程式資訊清單中指定 pushNotifications 功能。

選擇網路觸發程序

在某些情況下,任一觸發程序均適用。 當您選擇要在您的 app 中使用的觸發程序時,請考量下列建議。

在 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 新增網路功能。 您也可以使用文字編輯器,在應用程式資訊清單檔案中手動設定它們。

如需網路隔離的詳細資訊,請參閱 如何設定網路隔離功能

另請參閱