情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Windows Phone 8 のソケット

2014/06/18

対象: Windows Phone 8 および Windows Phone Silverlight 8.1 | Windows Phone OS 7.1

Windows Phone には、インターネット サービスやその他のリモート アプリケーションとソケットを使用して通信できるアプリケーションを開発するためのプログラミング インターフェイスが用意されています。ソケットを使用して通信を行うアプリケーションやサービスの例として、FTP、電子メール、チャット システム、ストリーミング マルチメディアなどが挙げられます。Windows Phone アプリケーションでソケットを使用すれば、伝送制御プロトコル (TCP) またはユーザー データグラム プロトコル (UDP) のソケットを介してサービスと通信するリッチ クライアント アプリケーションを作成できます。

このトピックは、次のセクションで構成されています。

Windows Phone には、TCP ソケットや UDP ソケットを作成して使用するために必要なプログラミング インターフェイスが用意されています。どの種類のソケットを使用するかは、アプリケーションのニーズに基づいて選択できます。次の図に、クライアント アプリケーションとサービスの間の通信セッション中に発生する操作を図示します。使用される用語の説明は、「用語」を参照してください。

Sequence Diagram of Socket Communication

図中でラベルを付けて示されている各操作について、次の表で説明します。

演算

TCP

UDP

1

TCP を介して通信を行うには、クライアントとサーバーの間で接続を確立する必要があります。クライアントが通信相手として要求するエンドポイントは、接続要求の一部として定義されている必要があります。これは、Windows Phone では非同期操作です。

UDP を介した通信は、コネクションレスです。つまり、実際に通信を行う前に接続を作成する必要はありません。

2

いったん接続が正常に確立できたら、クライアントは、データのバッファーをセットアップし、それをサーバーに渡すことによって、サーバーにデータを送信できます。TCP はストリームベースであり、データの受信順序が送信順序と同じになることが保証されます。この順序の保証と伝送の信頼性確保は、TCP プロトコルによって行われます。

UDP ソケットは、サーバーに送信要求を作成し、データのバッファーを渡すことによって、通信を開始できます。データはサーバーによって正常に受信されますが、受信の順序は保証されません。クライアントがこの確実性を必要とする場合は、クライアントとサーバーの両側でこれをカスタム実装する必要があります。

3

クライアントは、サーバーからデータを受信するように要求することができます。これは非同期呼び出しであり、成功した場合に得られるコールバックには、送信されたデータのバッファーが含まれます。

UDP ソケットは、このサービスに関連付けられているポートをリッスンし、適宜それを処理することによって、サービスからのデータを受信できます。

4

ソケットが接続されている限り、操作 2 および操作 3 での送信パターンと受信パターンを繰り返すことができます。

クライアントは、データを送受信し続けることができます。

5

クライアントは、いったん通信が終了すると、シャットダウンを呼び出して、ソケットを終了させることをサーバーに伝えます。この呼び出しは、サーバーから送信されてくる残りのデータを確実に受信してからソケットを切断するために使用されます。

6

最後に、クライアントがソケットを切断し、通信チャンネルを閉じます。

7

この時点でアクティブなソケットがないため、クライアントに送信されたデータは失われます。

この時点でアクティブなソケットがないため、クライアントに送信されたデータは失われます。

次に示すのは、Windows Phone での TCP と UDP の特性の比較です。

TCP

UDP

伝送タイプ

ストリームベース

データグラム

用途の例

電子メール、リモート管理、ファイル転送、Web

ストリーミング マルチメディア、オンライン ゲーム、インターネット電話

ユニキャスト

ASM (Any Source Multicast)

×

SSM (Source-specific Multicast)

×

ブロードキャスト

×

×

コネクションレスかコネクション指向か

コネクション指向

コネクションレス

信頼性のある通信

×

参照

Windows Phone 8 の TCP ソケット クライアント アプリを作成および使用する方法

Windows Phone 8 の UDP ソケット クライアント アプリを作成および使用する方法

Windows Phone 8 のマルチキャスト グループでデータを送受信する方法

ソケットは、データ パケット (メッセージ) をアプリケーション間またはプロセス間で配信するためのメカニズムです。プログラミングの用語では、ソケットは、TCP/IP プロトコル スタックに対するプログラミング インターフェイスです。ソケットは、ネットワーク上ではソケット アドレスで識別されます。ソケット アドレスは、インターネット プロトコル (IP) アドレスとポート番号を組み合わせたものです。Windows Phone アプリケーション内でソケットを扱う場合に知っておくべき一般的な用語を、次の表に示します。

語句

説明

ブロードキャスト

ネットワーク上のすべてのデバイスに対してデータを送信すること。

Client (クライアント)

ソケット通信において、サーバーにより提供されるサービスのコンシューマー。たとえば、チャット クライアントはチャット サービスのコンシューマーであり、そのサービスを使用して他のクライアントとのチャット セッションを確立します。Windows Phone デバイス上で実行されるアプリケーションは、ソケットを介してサービスを利用するクライアント アプリケーションです。

コネクションレス

通信の開始に先立って、ソケットの送信側と受信側の間で接続をセットアップする必要のない通信。このモードでは、受信側がデータを受信する準備ができているという保証はなく、データが受信されたかどうか、あるいはエラーなしで受信されたのかという受信確認もありません。UDP ソケットは、コネクションレスの通信インターフェイスを提供します。

コネクション指向

データの送受信に先立って、まずソケットが通信相手のソケットとの接続をセットアップしなければならない通信。いったん接続が確立されたら、データのストリームを送信することができ、それらは送信されたのと同じ順序で受信されます。TCP ソケットは、コネクション指向の通信インターフェイスを提供します。

エンドポイント

通信のいずれかの側の通信ポート。通常は IP アドレス、サポートされているトランスポート プロトコルの種類、およびポート番号によって定義されます。

IP アドレス

ネットワーク上のデバイスのための業界標準の名前付け規則。2 進数で、通常は、172.36.254.14 のような人間が読める形式で保存されます。

IPv4

インターネット上のデバイスのための 32 ビットの古いアドレス指定システム。人間が読める形式での IPv4 アドレスは、たとえば 172.36.254.14 などとなります。

IPv6

インターネット上のデバイスのための 128 ビットの最新アドレス指定システム。インターネット上で増え続けるデバイスの数に対応するために開発されたシステムです。人間が読める形式での IPv6 アドレスは、たとえば fe80::e42b:2e74:6ddb:e30 などとなります。

重要:重要:
IPv6 は、Windows Phone OS 7.1 のソケットではサポートされていません。

マルチキャスト

マルチキャスト グループに参加することによって、そのデータを受信するように登録したネットワーク デバイスへのデータの送信。

ポート番号

IP アドレス、および通信するためにサポートするトランスポート プロトコルと組み合わせられて、ネットワーク上のポートまたはエンドポイントを識別する番号。一般によく知られている一連のポートは、特定のサービスで使用するために予約されています。これには、Telnet (23)、HTTP (80) などがあります。その他の番号は、その他のサービスやアプリケーションで使用できます。

Server (サーバー)

ネットワーク上で、クライアントが利用する 1 つまたは複数のサービスを提供するデバイス。例として、チャット サーバーは、チャット クライアントが他のクライアントとのチャット セッションを確立するために使用するチャット サービスを提供します。Windows Phone デバイス上のアプリケーションはソケットを介してデータを送受信できますが、そのような場合、それらはサーバーとは見なされません。

ソケット

ネットワーク上の他のアプリケーションまたはサービスと通信するためのプログラミング インターフェイス。

伝送制御プロトコル (TCP)

ネットワーク上のメッセージの信頼性、順序、および配信を保証するインターネット標準。

TCP/IP

インターネット上やその他のネットワーク上で使用される一連の通信プロトコル。この名前はこの標準に追加された最初の 2 つのプロトコル、つまり TCP と IP にちなんで付けられたものですが、このプロトコルは 4 つのプロトコル層で構成されており、TCP プロトコルと UDP プロトコルはそのトランスポート層の一部です。

ユーザー データグラム プロトコル (UDP)

コネクションレスの形態でデータグラムを送信するために使用されるトランスポート層プロトコル。メッセージを送受信する前にあらかじめ接続を確立する必要がありません。この特徴のため、UDP は高速のトランスポート プロトコルですが、送信先でのデータグラムの受信が保証されておらず、既定では受信確認も一切送信されないため、信頼性の点で TCP より不利です。

ユニキャスト

ネットワーク上で一意に識別されるアドレスを使用して、特定の送信先にデータを送る送信。

Windows ランタイム API である Windows.Networking.Sockets が Windows Phone 8 に適用されました。Windows Phone ランタイム API として実装され、サポートされたいずれのプログラミング言語を選択しても簡単に使用できます。.NET API System.Net.Sockets は IPv6、リスナー ソケットなどの多くの機能をサポートするように拡張されていますが、ソケット プログラミングには新しい API を使用することをお勧めします。これは、.NET API より移植性が高いためです。Windows.Networking.Sockets は、クリーンで安全であり、使いやすくベスト プラクティスを適用する API とするため、一から作成されました。サポートされている Windows ランタイム API の詳細については、「Windows Phone ランタイム API」を参照してください。

Windows Phone 8 は、低レベル ソケット プログラミングを可能にする WinSock API をサポートするようになりました。サポートされる API については、「Windows Phone 8 でサポートされる Win32 API」を参照してください。

表示: