Windows.Networking.Sockets 名前空間

パッケージ化されたWindows アプリ (UWP および Windows アプリ SDK (WinUI 3) デスクトップ アプリを含む) のバックグラウンドで受信したリアルタイム ネットワーク通知のネットワーク通信とクラスに使用するソケットと WebSocket クラスを提供します。

クラス

Name 説明
ControlChannelTrigger

TCP 接続を確立し、受信トラフィックの通知を受け取るオブジェクトに対して、バックグラウンドでリアルタイム通知を受信できるようにします。

ControlChannelTrigger を使用する前に**BackgroundExecutionManager.RequestAccessAsync** を呼び出します。

DatagramSocket

UDP データグラム ソケットを使用したネットワーク通信をサポートします。

コード例については、「 ソケット」を参照してください。

DatagramSocketControl

DatagramSocket オブジェクトのソケット コントロール データを提供します。

DatagramSocketInformation

DatagramSocket オブジェクトのソケット情報を提供します。

DatagramSocketMessageReceivedEventArgs

DatagramSocket の MessageReceived イベントのデータを提供します。

MessageWebSocket

WebSocket を使用してメッセージ全体を読み書きできるネットワーク通信をサポートします。

MessageWebSocketControl

MessageWebSocket 上のソケット コントロール データを提供します。

MessageWebSocketInformation

MessageWebSocket のソケット情報を提供します。

MessageWebSocketMessageReceivedEventArgs

MessageWebSocket で受信したメッセージ イベントのデータを提供します。

ServerMessageWebSocket

Web サーバーが所有する WebSocket オブジェクトを使用してメッセージ全体を読み書きできるネットワーク通信をサポートします。 任意の WebSocket 接続に登録することはできません。代わりに、Windows Device Portal (WDP) などのシステム コードによって ServerMessageWebSocket のインスタンスが作成されます。

ServerMessageWebSocketControl

ServerMessageWebSocket 上のソケット コントロール データを提供します。

ServerMessageWebSocketInformation

ServerMessageWebSocket のソケット情報を提供します。

ServerStreamWebSocket

Web サーバーが所有する WebSocket オブジェクトを使用したストリームの読み取りと書き込みを可能にするネットワーク通信をサポートします。 任意の WebSocket 接続に登録することはできません。代わりに、Windows デバイス ポータル (WDP) などのシステム コードによって ServerStreamWebSocket のインスタンスが作成されます。

ServerStreamWebSocketInformation

ServerStreamWebSocket オブジェクトのソケット情報を提供します。

SocketActivityContext

アプリとソケット ブローカー サービスの間でソケットの所有権を転送するときにソケットに関連付けられたコンテキスト。

SocketActivityInformation

Socket Broker から転送されたソケットに関する情報を提供します。

SocketActivityTriggerDetails

バックグラウンド ブローカー インフラストラクチャによってインスタンス化され、 SocketActivityTrigger が発生したときに詳細を取得するためにアプリによって使用されるオブジェクト。

SocketError

DatagramSocket、StreamSocket、または StreamSocketListener に対する操作のソケット エラー状態を提供します。

StreamSocket

TCP 経由のストリーム ソケットまたは UWP アプリの RFCOMM Bluetoothを使用したネットワーク通信をサポートします。

StreamSocketControl

StreamSocket オブジェクトにソケット コントロール データを提供します。

StreamSocketInformation

StreamSocket オブジェクトのソケット情報を提供します。

StreamSocketListener

TCP ストリーム ソケットまたは RFCOMM Bluetoothを使用した受信ネットワーク接続のリッスンをサポートします。

StreamSocketListenerConnectionReceivedEventArgs

StreamSocketListener オブジェクトの ConnectionReceived イベントのデータを提供します。

StreamSocketListenerControl

StreamSocketListener オブジェクトのソケット コントロール データを提供します。

StreamSocketListenerInformation

StreamSocketListener オブジェクトのソケット情報を提供します。

StreamWebSocket

WebSocket を使用したストリームの読み取りと書き込みを可能にするネットワーク通信をサポートします。

StreamWebSocketControl

StreamWebSocket オブジェクトにソケット コントロール データを提供します。

StreamWebSocketInformation

StreamWebSocket オブジェクトのソケット情報を提供します。

WebSocketClosedEventArgs

MessageWebSocket、StreamWebSocket、または IWebSocket オブジェクトの閉じたイベントのデータを提供します。

WebSocketError

MessageWebSocket オブジェクトまたは StreamWebSocket オブジェクトのソケット エラー状態を提供します。

WebSocketKeepAlive

接続された WebSocket で WebSocket プロトコルキープアライブを送信する機能を提供します。

WebSocketServerCustomValidationRequestedEventArgs

WebSocket 上の ServerCustomValidationRequested イベントのデータを提供します。 このイベントは、WebSocket への新しいセキュリティで保護された接続が確立されているときに発生し、接続が確立される前にサーバー証明書のカスタム検証を実行する機会をコードに提供します。

構造体

Name 説明
BandwidthStatistics

StreamSocket、StreamWebSocket、または MessageWebSocket オブジェクトを使用したネットワーク データ転送の帯域幅情報を表します。

RoundTripTimeStatistics

StreamSocket オブジェクトのラウンド トリップ時間情報を表します。

インターフェイス

Name 説明
IControlChannelTriggerEventDetails

制御チャネル トリガーを区別するために使用されるバックグラウンド ブローカー インフラストラクチャによってインスタンス化されたオブジェクト。

IControlChannelTriggerResetEventDetails

ControlChannelReset イベントのバックグラウンド ブローカー インフラストラクチャによってインスタンス化され、ControlChannelTrigger がリセットされたことを示すオブジェクト。

IWebSocket

WebSocket を使用した読み取りと書き込みを可能にするネットワーク通信へのアクセスを提供します。

IWebSocketControl

IWebSocket オブジェクトのソケット コントロール データを提供します。

IWebSocketControl2

IWebSocket オブジェクトのソケット コントロール データを提供します。 このインターフェイスは、追加のプロパティを使用して IWebSocketControl インターフェイスを拡張します。

IWebSocketInformation

IWebSocket オブジェクトのソケット情報を提供します。

IWebSocketInformation2

IWebSocket オブジェクトのソケット情報を提供します。 このインターフェイスは、追加のプロパティを使用して IWebSocketInformation を拡張します。

列挙型

Name 説明
ControlChannelTriggerResetReason

ControlChannelTrigger がリセットされた理由。

ControlChannelTriggerResourceType

コントロール チャネル トリガーによって使用されるリソースの種類。

ControlChannelTriggerStatus

システムが、Windowsのクラス要素で使用する ControlChannelTrigger オブジェクトの構成を完了できたかどうかを指定します。Networking.Sockets と関連する名前空間。

MessageWebSocketReceiveMode

クライアントが受け入れるメッセージの種類について説明します。

SocketActivityConnectedStandbyAction

システムが接続されたスタンバイに移行したときに、ソケット ブローカー サービスを使用するアプリがパケットを受信できるかどうかを示します。

SocketActivityKind

ソケット ブローカー間で転送されるソケット オブジェクトの種類について説明します。

SocketActivityTriggerReason

SocketActivityTrigger が発生した理由。

SocketErrorStatus

ソケット操作の状態値を指定します。

SocketMessageType

MessageWebSocket オブジェクトのメッセージの種類を指定します。

SocketProtectionLevel

StreamSocket オブジェクトで使用する暗号化のレベルを指定します。

SocketQualityOfService

DatagramSocket オブジェクトまたは StreamSocket オブジェクトのサービス品質を指定します。

SocketSslErrorSeverity

SSL 接続で発生するエラーのカテゴリ。

注釈

Note

アプリ フレームワークの互換性:Windows。Networking.Sockets API は、UWP アプリだけでなく、Windows アプリ SDK (WinUI 3) デスクトップ アプリと Win32 デスクトップ アプリでも使用できます。 パッケージ デスクトップ アプリでは、UWP アプリと同じネットワーク機能宣言が使用されます。 パッケージ化されていないデスクトップ アプリには無制限のネットワーク アクセスがあり、機能を宣言する必要はありません。 ガイダンスについては、デスクトップ アプリでの Windows ランタイム API の呼び出しに関するトピックを参照してください。

Windows。Networking.Sockets 名前空間には、ソケットと WebSocket を使用するネットワーク用のクラスとインターフェイスが用意されています。 主なクラスを次に示します。

  • DatagramSocket。 ネットワーク通信に使用する UDP データグラム ソケット。
  • StreamSocket。 TCP 経由または RFCOMM を使用するBluetooth接続経由の送受信ネットワーク通信に使用するストリーム ソケット。
  • StreamSocketListener。 RFCOMM を使用する受信 TCP ネットワーク接続または受信Bluetooth接続をリッスンするストリーム ソケット リスナー。
  • MessageWebSocket。 ネットワーク通信用のメッセージ全体を読み書きするためのメッセージ ベースの WebSocket。 WebSocket を参照してください。
  • StreamWebSocket。 ネットワーク通信用のストリームの読み取りと書き込みを行うストリーム ベースの WebSocket。 WebSocket を参照してください。

これらのプライマリ クラスには、Windowsに関連する情報とコントロール クラスも多数含まれます。Networking.Sockets 名前空間。

例外の処理

Windowsで非同期メソッドを呼び出すときに例外を処理するコードを記述する必要があります。Networking.Sockets 名前空間。 例外は、パラメーター検証エラー、名前解決エラー、およびネットワーク エラーによって発生する可能性があります。 ネットワーク エラーの例外 (接続の損失、接続エラー、サーバーの障害など) は、いつでも発生する可能性があります。 これらのエラーにより、例外がスローされます。 アプリによって処理されない場合、例外によってアプリ全体がランタイムによって終了される可能性があります。

Windows。Networking.Sockets 名前空間には、ソケットと WebSocket を使用するときにエラーを処理するための便利なヘルパー メソッドと列挙型があります。 これは、アプリで特定のネットワーク例外を異なる方法で処理する場合に役立ちます。 アプリでは、パラメーター検証エラーの例外から HRESULT を使用して、例外の原因となったエラーの詳細を確認することもできます。

考えられる例外と例外の処理方法の詳細については、「 ネットワーク アプリでの例外の処理」を参照してください。

近接通信、Wi-Fi Direct、および Bluetooth での StreamSocket の使用

アプリでは、近距離にあるデバイス間のネットワーク接続に StreamSocket を使用できます。 Windows内のクラス。Networking.Proximity 名前空間は、Bluetoothまたは Wi-Fi Direct を使用する近くのデバイスへの StreamSocket とのネットワーク接続をサポートします。 Windows内の PeerFinder および関連クラス。Networking.Proximity 名前空間を使用すると、アプリは近くのデバイスでアプリの別のインスタンスを検出できます。 PeerFinder.FindAllPeersAsync メソッドは、ワイヤレス範囲内で同じアプリを実行しているピア コンピューターを参照します。 PeerFinder.ConnectAsync メソッドは接続された StreamSocket を返します。この StreamSocket は、アプリが近くのピア アプリでネットワーク データを転送するために使用できます。 詳細については、「近接通信とタップ、Windowsのサポート」を参照してください。Networking.Proximity、PeerFinder、および近接サンプル。

アプリでは、Windowsのクラスで Wi-Fi Direct を使用するデバイス間のネットワーク接続に StreamSocket を使用することもできます。Devices.WiFiDirect 名前空間。 WiFiDirectDevice クラスを使用すると、Wi-Fi Direct (WFD) 対応デバイスを持つ他のデバイスを検索できます。 WiFiDirectDevice.GetDeviceSelector メソッドは、近くの WFD デバイスのデバイス識別子を取得します。 近くの WFD デバイスへの参照を取得したら、 WiFiDirectDevice.GetConnectionEndpointPairs メソッドを呼び出して EndpointPair オブジェクトを取得できます。 StreamSocket クラスの ConnectAsync(EndpointPair) または ConnectAsync(EndpointPair, SocketProtectionLevel) メソッドを使用して、ソケット接続を確立できます。 詳細については、「Windows」を参照してください。Devices.WiFiDirect と WiFiDirectDevice。

Bluetoothは、ホスト名や IP アドレスではなく、Bluetooth サービス ID を StreamSocket 接続のエンドポイントとして使用します。 Bluetoothで StreamSocket を使用するには、アプリ マニフェストで bluetooth.rfcomm デバイス機能を設定する必要があります。 詳細については、Windowsを参照してください。Devices.Bluetooth.Rfcomm 名前空間、Bluetoothのデバイス機能を指定する方法、および rfcomm チャットのBluetoothサンプル。

Wi-Fi Direct での DatagramSocket の使用

アプリでは、Windowsのクラスを使用して、Wi-Fi Direct を使用するデバイス間のネットワーク データ転送に DatagramSocket を使用できます。Devices.WiFiDirect 名前空間。 WiFiDirectDevice クラスを使用すると、Wi-Fi Direct (WFD) 対応デバイスを持つ他のデバイスを検索できます。 WiFiDirectDevice.GetDeviceSelector メソッドは、近くの WFD デバイスのデバイス識別子を取得します。 近くの WFD デバイスへの参照を取得したら、 WiFiDirectDevice.GetConnectionEndpointPairs メソッドを呼び出して EndpointPair オブジェクトを取得できます。 DatagramSocket クラスのメソッドを使用して、EndpointPair オブジェクトに対するデータの送受信を行うことができます。 詳細については、「Windows」を参照してください。Devices.WiFiDirect と WiFiDirectDevice。

ネットワーク トリガーの使用

Windows。Networking.Sockets 名前空間には、アプリがバックグラウンド ネットワークに使用できる 2 種類のトリガー (ControlChannelTrigger と SocketActivityTrigger) が用意されています。

制御チャネルのトリガー

ControlChannelTrigger を使用すると、アプリがバックグラウンドにあるときに、ネットワーク データ パケットとネットワーク キープアライブを受信できます。 これにより、アプリは、Windowsの StreamSocket の状態とネットワーク通知をリアルタイムで提供できます。Networking.Sockets 名前空間と、関連する名前空間内の他のネットワーク クラス。

ネットワーク トリガーは、ネットワークとシステム リソースの使用量を最小限に抑えるために、実行時間の長いネットワーク アプリ (電子メール アプリなど) によって使用されます。 ネットワーク トリガーを使用すると、アプリを一定期間低電力モードに切り替え、ネットワーク接続はそのままで低電力状態に保ちます。 キープアライブ間隔を設定して、アプリがいつ起動するかをシステムに知らせることができます。 アプリのパケットを受信したときに通知を受け取るトリガーを設定することもできます。 これらの通知機能は、モバイル デバイスで実行時間の長いネットワーク アプリを使用する場合に、バッテリ寿命を延ばすのに役立ちます。

詳細については、 ControlChannelTrigger クラスと バックグラウンド接続オプションを設定する方法を参照してください。

ソケット アクティビティ トリガー

SocketActivityTrigger を使用すると、アプリがアクティブでない場合 (中断または終了されている場合でも)、現在メモリに読み込まれていない場合でも、ネットワーク データ パケットを受信できます。 これは特に、ネットワーク サービスを提供するアプリに対して提供され、アプリは DNS-SD を介してサービス プロバイダーとして登録され、非アクティブになります。 SocketActivityTrigger は、クライアントがサービスに接続したときにアプリに通知するため、サービスは要求されたサービスをアクティブ化して提供できます。 SocketActivityTrigger は、他の状況でも使用できます。 受信したネットワーク トラフィックに応じてアプリをアクティブ化できるようにする場合は常に使用します。

アプリでソケット アクティビティ トリガーを使用する場合は、アプリ マニフェストで pushNotifications 機能を指定する必要があります。

ネットワーク トリガーの選択

いずれかの種類のトリガーが適しているシナリオがいくつかあります。 アプリで使用するトリガーの種類を選択する場合は、次のアドバイスを検討してください。

Windows Server 2012でのソケットと WebSocket の使用

Windows Server 2012および Windows Server 2012 R2 では、Windowsのほとんどのクラスを実装するWindows.Networking.dll。Media Foundation 機能が有効になっていない限り、Networking.Sockets 名前空間の読み込みに失敗します。 その結果、Windowsでソケットまたは WebSocket クラスを使用するアプリ。Media Foundation 機能が無効になっている場合、Networking.Sockets 名前空間は失敗します。 Windows Server 2012または Windows Server 2012 R2 は、Media Foundation 機能を無効にしてインストールします。

Media Foundation 機能は、サーバー マネージャーを使用するか、コマンド プロンプトまたはスクリプトに次のテキストを入力して、Windows Server 2012または Windows Server 2012 R2 で有効にすることができます。

dism /online /enable-feature /featurename:ServerMediaFoundation Media Foundation 機能を有効にすると、ユーザーは再起動を求められます。 コンピューターが再起動されると、Windowsのソケットと WebSocket のクラス。Networking.Sockets 名前空間は想定どおりに動作します。

ネットワーク分離でのソケットと WebSocket の使用

Windowsでのネットワーク分離により、パッケージ アプリ (UWP やパッケージ Windows アプリ SDK (WinUI 3) デスクトップ アプリを含む) のセキュリティ プロファイルを完全に制御できます。

ネットワーク分離を使用すると、適切な機能を選択することで、各アプリに必要なネットワーク アクセスを定義できます。 適切な機能が設定されていないアプリでは、特定のネットワークの種類 (インターネットまたはホーム/ワーク ネットワーク) と特定のネットワーク要求 (送信クライアントが開始した要求、または受信要求なし要求と送信クライアント開始要求の両方) を使用できなくなります。 ネットワーク分離を適用する機能により、アプリが侵害された場合でも、アプリが機能として付与された機能 (ネットワークの種類やネットワーク要求など) のみをアプリで使用できるようになります。 これにより、他のアプリやオペレーティング システムへの影響が大幅に軽減されます。

Windowsでは、ネットワーク分離がアクティブに適用されます。 メソッドの呼び出し、またはWindows内のプロパティへの任意のアクセス。適切なネットワーク機能が有効になっていない場合、Networking.Sockets 名前空間 (またはネットワーク アクセスを必要とする関連する名前空間) が失敗する可能性があります。

アプリのネットワーク機能は、アプリのビルド時にアプリ マニフェストで構成されます。 ネットワーク機能は、通常、アプリの開発時にVisual Studioを使用して追加されます。 テキスト エディターを使用して、アプリ マニフェスト ファイルで手動で設定することもできます。 パッケージ化されていないデスクトップ アプリは、ネットワーク分離の対象ではなく、ネットワーク機能を宣言する必要はありません。

ネットワーク分離の詳細については、「 ネットワーク分離機能を構成する方法」を参照してください。

関連項目