Windows.Networking.Sockets 名前空間

ネットワーク通信に使用するソケットと WebSocket クラスと、UWP アプリのバックグラウンドで受信したリアルタイム ネットワーク通知のクラスを提供します。

クラス

ControlChannelTrigger

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

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

注意

このクラスは、Windows Phoneではサポートされていません。

DatagramSocket

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

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

DatagramSocketControl

DatagramSocket オブジェクトのソケット 制御データを提供します。

DatagramSocketInformation

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

DatagramSocketMessageReceivedEventArgs

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

MessageWebSocket

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

MessageWebSocketControl

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

MessageWebSocketInformation

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

MessageWebSocketMessageReceivedEventArgs

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

ServerMessageWebSocket

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

ServerMessageWebSocketControl

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

ServerMessageWebSocketInformation

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

ServerStreamWebSocket

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

ServerStreamWebSocketInformation

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

SocketActivityContext

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

SocketActivityInformation

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

SocketActivityTriggerDetails

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

SocketError

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

StreamSocket

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

StreamSocketControl

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

StreamSocketInformation

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

StreamSocketListener

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

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 への新しいセキュリティで保護された接続が確立されているときに発生し、接続が確立される前にサーバー証明書のカスタム検証を実行する機会をコードに与えます。

構造体

BandwidthStatistics

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

RoundTripTimeStatistics

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

インターフェイス

IControlChannelTriggerEventDetails

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

注意

このインターフェイスは、Windows Phoneではサポートされていません。

IControlChannelTriggerResetEventDetails

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

注意

このインターフェイスは、Windows Phoneではサポートされていません。

IWebSocket

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

IWebSocketControl

IWebSocket オブジェクトのソケット制御データを提供します。

IWebSocketControl2

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

IWebSocketInformation

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

IWebSocketInformation2

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

列挙型

ControlChannelTriggerResetReason

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

注意

この列挙は、Windows Phoneではサポートされていません。

ControlChannelTriggerResourceType

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

注意

この列挙は、Windows Phoneではサポートされていません。

ControlChannelTriggerStatus

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

注意

この列挙は、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 を使用する Bluetooth 接続経由の送受信ネットワーク通信に使用するストリーム ソケット。
  • StreamSocketListener。 受信 TCP ネットワーク接続または RFCOMM を使用する受信 Bluetooth 接続をリッスンするストリーム ソケット リスナー。
  • MessageWebSocket。 ネットワーク通信用のメッセージ全体を読み書きするためのメッセージ ベースの WebSocket。 「WebSockets」を参照してください。
  • StreamWebSocket。 ネットワーク通信用のストリームの読み取りと書き込みを行うストリーム ベースの WebSocket。 「WebSockets」を参照してください。

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

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

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

Wi-Fi Direct での DatagramSocket の使用

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

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

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

コントロール チャネル トリガー

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

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

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

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

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

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

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

どちらの種類のトリガーが適しているかを判断するいくつかのシナリオがあります。 アプリで使うトリガーの種類を選択するときは、次のアドバイスを検討してください。

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 クラスを使用するアプリは失敗します。 Media Foundation 機能が無効になっている状態で Windows Server 2012 または Windows Server 2012 R2 がインストールされます。

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

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

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

Windows 8 のネットワーク分離を使用すると、UWP アプリのセキュリティ プロファイルを完全に制御できます。

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

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

アプリのネットワーク機能は、アプリのビルド時にアプリ マニフェストで構成します。 ネットワーク機能は通常、アプリの開発時に Visual Studio を使用して追加されます。 また、テキスト エディターを使用して、アプリ マニフェスト ファイルで手動で設定することもできます。

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

こちらもご覧ください