Windows.Networking.Sockets 名前空間
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ネットワーク通信に使用するソケットと WebSocket クラスと、UWP アプリのバックグラウンドで受信したリアルタイム ネットワーク通知のクラスを提供します。
クラス
ControlChannelTrigger |
TCP 接続を確立し、受信トラフィックの通知を受け取るオブジェクトに対して、バックグラウンドでリアルタイム通知を受信できるようにします。 ControlChannelTrigger を使用する前に**BackgroundExecutionManager.RequestAccessAsync** を呼び出します。 注意 このクラスは、Windows Phoneではサポートされていません。 |
DatagramSocket |
UDP データグラム ソケットを使用したネットワーク通信をサポートします。 コード例については、「 ソケット」を参照してください。 |
DatagramSocketControl |
DatagramSocket オブジェクトのソケット 制御データを提供します。 |
DatagramSocketInformation |
DatagramSocket オブジェクトのソケット情報を提供します。 |
DatagramSocketMessageReceivedEventArgs |
DatagramSocket の MessageReceived イベントのデータを提供します。 |
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.Proximity、 PeerFinder、および 近接サンプル」を参照してください。
アプリでは、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 種類のトリガー ( ControlChannelTrigger と SocketActivityTrigger) が用意されています。
コントロール チャネル トリガー
ControlChannelTrigger を使用すると、アプリがバックグラウンドにあるときに、ネットワーク データ パケットとネットワーク キープアライブを受信できます。 これにより、アプリは、Windows.Networking.Sockets 名前空間の StreamSocket と、関連する名前空間内の他のネットワーク クラスに対して、リアルタイムの状態とネットワーク通知を提供できます。
ネットワーク トリガーは、ネットワークとシステム リソースの使用量を最小限に抑えるために、実行時間の長いネットワーク アプリ (電子メール アプリなど) によって使用されます。 ネットワーク トリガーを使用すると、アプリを一定期間低電力モードに切り替え、ネットワーク接続はそのまま低電力状態に保ちます。 キープアライブ間隔を設定して、アプリがいつ起動するかをシステムに知らせることができます。 アプリに対してパケットを受信したときに通知を受け取るトリガーを設定することもできます。 これらの通知機能は、モバイル デバイスで実行時間の長いネットワーク アプリを使用する場合に、バッテリの寿命を延ばすのに役立ちます。
詳細については、「 ControlChannelTrigger クラス」および 「バックグラウンド接続オプションを設定する方法」を参照してください。
ソケット アクティビティ トリガー
SocketActivityTrigger を使用すると、アプリがアクティブでない場合 (中断または終了されている場合でも)、現在メモリに読み込まれていない場合でも、ネットワーク データ パケットを受信できます。 これは特に、ネットワーク サービスを提供するアプリ向けに提供され、アプリは DNS-SD を介してサービス プロバイダーとして登録され、非アクティブになります。 SocketActivityTrigger は、クライアントがサービスに接続したときにアプリに通知し、サービスがアクティブ化して要求されたサービスを提供できるようにします。 SocketActivityTrigger は、他の状況でも使用できます。 受信したネットワーク トラフィックに応じてアプリをアクティブ化できる場合は常に使用します。
アプリでソケット アクティビティ トリガーを使う場合は、pushNotifications 機能をアプリ マニフェストに指定する必要があります。
ネットワーク トリガーの選択
どちらの種類のトリガーが適しているかを判断するいくつかのシナリオがあります。 アプリで使うトリガーの種類を選択するときは、次のアドバイスを検討してください。
- IXMLHTTPRequest2、System.Net.Http.HttpClient、または System.Net.Http.HttpClientHandler を使う場合は、ControlChannelTrigger を使う必要があります。
- プッシュ対応 StreamSocket を使用している場合は、 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 クラスを使用するアプリは失敗します。 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 を使用して追加されます。 また、テキスト エディターを使用して、アプリ マニフェスト ファイルで手動で設定することもできます。
ネットワーク分離の詳細については、「ネットワーク分離 機能を構成する方法」を参照してください。
こちらもご覧ください
- PeerFinder
- WiFiDirectDevice
- Windows.Devices.Bluetooth.Rfcomm
- Windows.Devices.WiFiDirect
- Windows.Networking
- Windows.Networking.Connectivity
- Windows.Networking.Proximity
- ネットワークのサポートの追加
- ソケットを使用した接続
- WebSocket
- ネットワーク アプリでの例外の処理
- ネットワーク分離機能を構成する方法
- バックグラウンド接続オプションを設定する方法
- Bluetooth のデバイス機能を指定する方法
- 近接とタップのサポート
- ネットワーク接続のトラブルシューティングとデバッグ
- SetSocketMediaStreamingMode
- Bluetooth Rfcomm チャットのサンプル
- DatagramSocket のサンプル
- ControlChannelTrigger StreamWebSocket サンプル
- ControlChannelTrigger TCP ソケットのサンプル
- 近接通信のサンプル
- StreamSocket のサンプル
- DatagramSocket のサンプル
- WebSocket のサンプル
- StreamSocket のサンプル
- Wi-Fi Direct サンプル
- Wi-Fi Direct サービスのサンプル (Windows 10)
- ソケット アクティビティ トリガー ストリーム ソケットのサンプル