ソケットを使った接続 (HTML)
[ この記事は、Windows ランタイム アプリを作成する Windows 8.x および Windows Phone 8.x 開発者を対象としています。Windows 10 向けの開発を行っている場合は、「最新のドキュメント」をご覧ください]
Windows ストア アプリでは、Windows.Networking.Sockets 名前空間内の機能を使って、TCP または UDP ソケットでデータを送受信できます。
ソケットは、ネットワーク データを送受信するための下位レベルのインターフェイスを提供します。ソケットで使われる主なクラスは次のとおりです。
- DatagramSocket - UDP データグラム ソケットを使ったネットワーク通信をサポートします。
- StreamSocket - TCP ストリーム ソケットを使ったネットワーク通信をサポートします。
- StreamSocketListener - TCP ストリーム ソケットを使った着信ネットワーク接続のリッスンをサポートします。
また、上記の主要なクラスには、これらと共に使われる関連のサポート クラスが Windows.Networking.Sockets 名前空間内に多数あります。
対象となる開発者
Windows ランタイム アプリでネットワーク通信でのソケットの使用を有効にすることに関心のある Jvascript/C#/VB.NET/C++ 開発者を対象に設計されています。この機能には、開発者が他の上位レイヤーのネットワーキング プロトコルを実装するための、UDP マルチキャストを含む TCP ソケットと UDP ソケットが含まれます。TCP ソケットと UDP ソケットは、クライアント接続の確立や、接続をリッスンしてサーバーとして動作するため、クライアントとサーバー両方の動作のためにアプリで使われます。
アプリの要件に基づいて、次のプロトコルを使うことを検討してください。
アプリ | 用途 |
---|---|
他のネットワーキング機能で直接サポートされない既存のプロトコル (メール用の SMTP、POP、IMAP、MAPI など) を使うネットワーク サービスに接続する。 |
TCP または UDP ソケット |
同じローカル ネットワーク上の別のコンピューターに接続する。 |
TCP または UDP ソケット |
HTTP プロキシを通じて通信できるシンプルな要求/応答プロトコルが必要。 |
C#、VB.NET、C++ で使うことができる Representational State Transfer (REST) API。 |
HTTP プロキシを使うなど、Web 間で接続するためにソケットに似たセマンティクス (非同期の双方向転送) が必要。 |
WebSocket |
ソケットは、Windows.Networking.Sockets 名前空間と Windows.Networking 名前空間のクラスによってサポートされます。
Windows 8 には、WebSocket と呼ばれる新しい種類のソケットも導入されています。詳しくは、「WebSocket を使った接続」と MessageWebSocket クラスおよび StreamWebSocket クラスに関するトピックをご覧ください。
このセクションの内容
トピック | 説明 |
---|---|
ストリーム ソケットを使って接続する方法 | TCP を使ってデータを送受信するストリーム ソケットによるネットワーク リソースへの接続方法について学習します。 |
データグラム ソケットを使って接続する方法 | UDP を使ってデータを送受信するデータグラム ソケットによるネットワーク リソースへの接続方法について学習します。 |
ソケットの詳細制御の使い方 | DatagramSocket、StreamSocket、または StreamSocketListener を使っている場合のソケットの詳細制御の使い方について学習します。 |
TLS/SSL を使ってソケット接続のセキュリティを確保する方法 | StreamSocket を使っている場合に、TLS/SSL でソケット接続を保護する方法を学習します。 |
ソケット操作にタイムアウトを設定する方法 | ネットワーク ソケット操作にタイムアウトを設定して、操作の完了を待機する時間を制限する方法について学習します。 |
ソケットとネットワーク分離の併用
開発者は Windows 8.1、Windows Phone 8.1、Windows Server 2012 R2 のネットワーク分離機能を使って、Windows ランタイム アプリによるネットワーク アクセスを制御および制限できます。 すべてのアプリにネットワークへのアクセスが必要なわけではありません。ただし、Windows 8.1 と Windows Server 2012 R2 には、アプリでネットワークへのアクセスを行うためのさまざまなレベルのネットワーク アクセスが用意されており、適切な機能を選んで有効にできます。
ネットワーク分離では、開発者が必要なネットワーク アクセスのスコープをアプリごとに定義できます。適切なスコープが定義されていないアプリは、特定の種類のネットワークや特定の種類のネットワーク要求 (クライアント側から開始される出力方向の要求、または相手から開始される入力方向の要求とクライアント側から開始される出力方向の要求の両方) にアクセスできません。 ネットワーク分離を設定して強制的に適用できるため、アプリのセキュリティが侵害されたとしても、そこからアクセスできるネットワークは、そのアプリに対して明示的に許可されている範囲に限られます。そのため、他のアプリケーションや Windows そのものへの影響の範囲をきわめて小さくできます。
ネットワーク分離は、ネットワーク アクセスを伴う Windows.Networking.Sockets と関連する名前空間に存在するすべてのクラス要素に影響します。 ネットワーク分離は、Windows によって能動的かつ強制的に適用されます。適切なネットワーク機能が有効になっていなければ、ネットワーク アクセスを伴う Windows.Networking.Sockets 名前空間のクラス要素の呼び出しは失敗する可能性があります。
アプリのネットワーク機能は、アプリのビルド時にアプリ マニフェストで構成します。通常、ネットワーク機能は、アプリの開発時に Microsoft Visual Studio 2013 を使って追加します。 アプリ マニフェスト ファイルをテキスト エディターで直接編集してネットワーク機能を設定することもできます。
ネットワーク分離について詳しくは、「ネットワーク分離機能を構成する方法」をご覧ください。
関連トピック
その他のリソース
辞書/リファレンス
Windows.Networking.Connectivity
サンプル