次の方法で共有


DatagramSocket.ConnectAsync メソッド

定義

オーバーロード

ConnectAsync(EndpointPair)

DatagramSocketEndpointPair オブジェクトとして指定されたリモート ネットワーク宛先への接続操作を開始します。

ConnectAsync(HostName, String)

DatagramSocket で、リモート ホスト名とリモート サービス名で指定されたリモート宛先への接続操作を開始します。

ConnectAsync(EndpointPair)

DatagramSocketEndpointPair オブジェクトとして指定されたリモート ネットワーク宛先への接続操作を開始します。

public:
 virtual IAsyncAction ^ ConnectAsync(EndpointPair ^ endpointPair) = ConnectAsync;
/// [Windows.Foundation.Metadata.Overload("ConnectWithEndpointPairAsync")]
IAsyncAction ConnectAsync(EndpointPair const& endpointPair);
[Windows.Foundation.Metadata.Overload("ConnectWithEndpointPairAsync")]
public IAsyncAction ConnectAsync(EndpointPair endpointPair);
function connectAsync(endpointPair)
Public Function ConnectAsync (endpointPair As EndpointPair) As IAsyncAction

パラメーター

endpointPair
EndpointPair

ローカル ホスト名または IP アドレス、ローカル サービス名または UDP ポート、リモート ホスト名またはリモート IP アドレス、リモート ネットワーク宛先のリモート サービス名またはリモート UDP ポートを指定する EndpointPair オブジェクト。

戻り値

DatagramSocket オブジェクトに対する非同期接続操作。

属性

Windows の要件

アプリの機能
ID_CAP_NETWORKING [Windows Phone] internetClientServer privateNetworkClientServer

注釈

DatagramSocket のこの ConnectAsync(EndPointPair) メソッドは、OutputStream プロパティを使用するときにデータグラムが送信されるローカルエンドポイントとリモート エンドポイントを定義するために使用されます。 この方法では、 endpointPair パラメーターのリモート ホスト名に受け入れられるパケットのリモート IP アドレスも制限されます。 endpointPair パラメーターのリモート エンドポイントと一致する受信パケットのみが、DatagramSocketMessageReceived イベントをトリガーします。

アプリは、後で DatagramSocketOutputStream プロパティで WriteAsync メソッドを呼び出すか、OutputStreamDataWriter オブジェクトに渡して DataWriter オブジェクトのメソッドを呼び出すことによって、ネットワーク データをリモート ネットワーク宛先に送信できます。

endpointPair パラメーターで渡される EndpointPairRemoteHostName プロパティには、リモート接続先のホスト名または IP アドレスを含めることができます。 endpointPair パラメーターで渡される EndpointPairRemoteServiceName プロパティには、リモート接続先のサービス名または UDP ポートを含めることができます。 RemoteHostName プロパティにホスト名が含まれている場合、ConnectAsync(EndPointPair) メソッドはリモート ホスト名を IP アドレスに解決します。 EndpointPairRemoteServiceName プロパティにサービス名が含まれている場合、ConnectAsync(EndPointPair) メソッドはリモート サービス名を UDP ポート番号に解決します。

既定で認識されるサービス名の文字列は、ローカル コンピューターの %windir%\System32\drivers\etc\services ファイルに一覧表示されているサービス名です。 その他のサービス名の値は、DNS SRV レコードのドメイン ネーム システム (DNS) サーバーに対するネーム サービス クエリになります。

RemoteHostName プロパティと RemoteServiceName プロパティを指定する必要があります。 RemoteHostName が null の場合、または RemoteServiceName が null または空の文字列の場合は、エラーが発生します。

endpointPair パラメーターで渡された EndpointPair オブジェクトに null LocalHostName プロパティが含まれている場合、システムは使用するローカル IP アドレスを指定します。 endpointPair パラメーターで渡された EndpointPair オブジェクトに空の LocalServiceName プロパティが含まれている場合、システムは使用されるローカル UDP ポートを指定します。

DatagramSocket を使用して UDP データグラムをリモート ネットワークの宛先に送信するには、次の 2 つの方法があります。

  • GetOutputStreamAsync メソッドのいずれかを使用する。
  • OutputStream プロパティを使用して ConnectAsync メソッドを正常に呼び出した後。

GetOutputStreamAsync メソッドを使用すると、アプリは DatagramSocket オブジェクトを使用して UDP データグラムを複数のネットワーク宛先に送信できます。 GetOutputStreamAsync メソッドが呼び出されるたびに、アプリは remoteHostName パラメーターと remoteServiceName パラメーターに異なる値を設定できます。

DatagramSocket オブジェクト上の 1 つのリモート エンドポイントからデータを受信するには、アプリで MessageReceived イベントをイベント ハンドラーに割り当て、endpointPair パラメーターをリモート エンドポイント情報に設定して ConnectAsync(EndPointPair) メソッドを呼び出す必要があります。 MessageReceived イベント ハンドラーは、バインド操作または接続操作の前に設定する必要があります。それ以外の場合はエラーが発生します。

操作の一般的な順序は次のとおりです。

  • DatagramSocket を作成します。
  • DatagramSocketControl プロパティを使用して、DatagramSocketControl オブジェクトを取得し、高度なコントロールを設定します。 この手順は通常、ほとんどのアプリでは必要ありません。
  • MessageReceived イベントをイベント ハンドラーに割り当てます。
  • ConnectAsync メソッドを呼び出してリモート エンドポイントに接続します。
  • DatagramSocketOutputStream プロパティを DataWriter オブジェクトと共に使用して、リモート エンドポイントにメッセージを送信します。
  • MessageReceived イベント ハンドラーは、リモート エンドポイントからのメッセージが到着するたびに呼び出されます。 また、GetOutputStreamAsync メソッドは、アプリが BindEndpointAsync メソッドまたは BindServiceNameAsync メソッドを使用してローカル サービス名または UDP ポートにバインドする場合、ConnectAsync メソッドとは異なります。 GetOutputStreamAsync メソッドを使用すると、アプリはローカル サービス名または UDP ポートに送信された任意のリモート宛先からパケットを受信します。 ConnectAsync メソッドでは、アプリは ConnectAsync メソッドにパラメーターとして渡されたリモート宛先からのみパケットを受信します。

BindServiceNameAsync(String, NetworkAdapter) メソッドを使用して、ConnectAsync(EndPointPair) メソッドを呼び出す前にネットワーク アダプターを指定できます。 指定したアダプターがバインド操作に使用されます。 BindServiceNameAsync(String, NetworkAdapter) メソッドを呼び出し、ConnectAsync(EndPointPair) に渡される endpointPair パラメーターが LocalHostName を指定した場合、ConnectAsync(EndPointPair) メソッドは失敗します。

ConnectAsync メソッドは、ユニキャスト IP アドレスに対してのみ機能します。 endpointPair パラメーターで設定されたリモート IP アドレス内のマルチキャスト IP アドレスを使用して ConnectAsync メソッドを呼び出そうとすると、非同期操作はエラーで完了します。 エラーを SocketError.GetStatus メソッドに渡すと、返される値は SocketErrorStatus.HostNotFound になります。

ConnectAsync を 255.255.255.255.255 などのブロードキャスト IP アドレスと共に使用すると接続されますが、見つかった最初のネットワーク アダプター経由でのみブロードキャストされます。 使用可能なすべてのアダプターでブロードキャストするには、 GetOutputStreamAsync を使用します。

こちらもご覧ください

適用対象

ConnectAsync(HostName, String)

DatagramSocket で、リモート ホスト名とリモート サービス名で指定されたリモート宛先への接続操作を開始します。

public:
 virtual IAsyncAction ^ ConnectAsync(HostName ^ remoteHostName, Platform::String ^ remoteServiceName) = ConnectAsync;
/// [Windows.Foundation.Metadata.Overload("ConnectAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncAction ConnectAsync(HostName const& remoteHostName, winrt::hstring const& remoteServiceName);
[Windows.Foundation.Metadata.Overload("ConnectAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncAction ConnectAsync(HostName remoteHostName, string remoteServiceName);
function connectAsync(remoteHostName, remoteServiceName)
Public Function ConnectAsync (remoteHostName As HostName, remoteServiceName As String) As IAsyncAction

パラメーター

remoteHostName
HostName

リモート ネットワーク宛先のホスト名または IP アドレス。

remoteServiceName
String

Platform::String

winrt::hstring

リモート ネットワーク宛先のサービス名または UDP ポート。

戻り値

DatagramSocket オブジェクトに対する非同期接続操作。

属性

Windows の要件

アプリの機能
ID_CAP_NETWORKING [Windows Phone] internetClientServer privateNetworkClientServer

注釈

DatagramSocketConnectAsync メソッドは、OutputStream プロパティを使用するときにデータグラムが送信されるリモート ホスト名またはリモート IP アドレスとリモート サービス名または UDP ポート番号を定義するために使用されます。 このメソッドは、 remoteHostName パラメーターに受け入れられるパケットのリモート IP アドレスも制限します。 remoteHostName パラメーターに一致する受信パケットのみが、DatagramSocketMessageReceived イベントをトリガーします。

アプリは、後で DatagramSocketOutputStream プロパティで WriteAsync メソッドを呼び出すか、OutputStreamDataWriter オブジェクトに渡して DataWriter オブジェクトのメソッドを呼び出すことによって、ネットワーク データをリモート ネットワーク宛先に送信できます。

remoteHostName パラメーターには、リモート宛先のホスト名または IP アドレスを含めることができます。 remoteServiceName パラメーターには、リモート宛先のサービス名または UDP ポートを含めることができます。 remoteHostName パラメーターにホスト名が含まれている場合、ConnectAsync メソッドはリモート ホスト名を IP アドレスに解決します。 remoteServiceName パラメーターにサービス名が含まれている場合、ConnectAsync メソッドはリモート サービス名を UDP ポート番号に解決します。

remoteServiceName パラメーターによって既定で認識されるサービス名の文字列は、ローカル コンピューターの %windir%\System32\drivers\etc\services ファイルに一覧表示されているサービス名です。 その他のサービス名の値は、DNS SRV レコードのドメイン ネーム システム (DNS) サーバーに対するネーム サービス クエリになります。

remoteHostName パラメーターと remoteServiceName パラメーターを指定する必要があります。 remoteHostName が null であるか、remoteServiceName が null または空の文字列である場合は、エラーが発生します。

DatagramSocket を使用して UDP データグラムをリモート ネットワークの宛先に送信するには、次の 2 つの方法があります。

  • GetOutputStreamAsync メソッドのいずれかを使用します。
  • ConnectAsync メソッドの呼び出しが正常に完了したら、OutputStream プロパティを使用します。

GetOutputStreamAsync メソッドを使用すると、アプリは DatagramSocket オブジェクトを使用して UDP データグラムを複数のネットワーク宛先に送信できます。 GetOutputStreamAsync メソッドが呼び出されるたびに、アプリは remoteHostName パラメーターと remoteServiceName パラメーターに異なる値を設定できます。

DatagramSocket オブジェクト上の単一のエンドポイントからデータを受信するには、アプリで MessageReceived イベントをイベント ハンドラーに割り当て、remoteHostName パラメーターと remoteServiceName パラメーターをリモート エンドポイント情報に設定して ConnectAsync メソッドを呼び出す必要があります。 MessageReceived イベント ハンドラーは、バインド操作または接続操作の前に設定する必要があります。それ以外の場合はエラーが発生します。

操作の一般的な順序は次のとおりです。

  1. DatagramSocket を作成します。
  2. DatagramSocketControl プロパティを使用して、DatagramSocketControl オブジェクトを取得し、高度なコントロールを設定します。 この手順は通常、ほとんどのアプリでは必要ありません。
  3. MessageReceived イベントをイベント ハンドラーに割り当てます。
  4. ConnectAsync メソッドを呼び出してリモート エンドポイントに接続します。
  5. DatagramSocketOutputStream プロパティを DataWriter オブジェクトと共に使用して、リモート エンドポイントにメッセージを送信します。
  6. MessageReceived イベント ハンドラーは、リモート エンドポイントからのメッセージが到着するたびに呼び出されます。 また、GetOutputStreamAsync メソッドは、アプリが BindEndpointAsync メソッドまたは BindServiceNameAsync メソッドを使用してローカル サービス名または UDP ポートにバインドする場合、ConnectAsync メソッドとは異なります。 GetOutputStreamAsync メソッドを使用すると、アプリはローカル サービス名または UDP ポートに送信された任意のリモート宛先からパケットを受信します。 ConnectAsync メソッドでは、アプリは ConnectAsync メソッドにパラメーターとして渡されたリモート宛先からのみパケットを受信します。

ConnectAsync メソッドは、ユニキャスト IP アドレスに対してのみ機能します。 remoteHostName パラメーターのマルチキャスト IP アドレスを使用して ConnectAsync メソッドを呼び出そうとすると、非同期操作はエラーで完了します。 エラーを SocketError.GetStatus メソッドに渡すと、返される値は SocketErrorStatus.HostNotFound になります。

ConnectAsync を 255.255.255.255.255 などのブロードキャスト IP アドレスと共に使用すると接続されますが、見つかった最初のネットワーク アダプター経由でのみブロードキャストされます。 使用可能なすべてのアダプターでブロードキャストするには、 GetOutputStreamAsync を使用します。

こちらもご覧ください

適用対象