다음을 통해 공유


DatagramSocket.ConnectAsync 메서드

정의

오버로드

ConnectAsync(EndpointPair)

DatagramSocket에서 EndpointPair 개체로 지정된 원격 네트워크 대상에 대한 연결 작업을 시작합니다.

ConnectAsync(HostName, String)

DatagramSocket에서 원격 호스트 이름 및 원격 서비스 이름으로 지정된 원격 대상에 대한 연결 작업을 시작합니다.

ConnectAsync(EndpointPair)

DatagramSocket에서 EndpointPair 개체로 지정된 원격 네트워크 대상에 대한 연결 작업을 시작합니다.

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 매개 변수의 원격 엔드포인트와 일치하는 들어오는 패킷만 DatagramSocket에서 MessageReceived 이벤트를 트리거합니다.

앱은 나중에 DatagramSocketOutputStream 속성에서 WriteAsync 메서드를 호출하거나 DataWriter 개체에 OutputStream을 전달하고 DataWriter 개체의 메서드를 호출하여 네트워크 데이터를 원격 네트워크 대상으로 보낼 수 있습니다.

endpointPair 매개 변수에 전달된 EndpointPairRemoteHostName 속성에는 원격 대상의 호스트 이름 또는 IP 주소가 포함될 수 있습니다. endpointPair 매개 변수에 전달된 EndpointPairRemoteServiceName 속성에는 원격 대상의 서비스 이름 또는 UDP 포트가 포함될 수 있습니다. RemoteHostName 속성에 호스트 이름이 포함된 경우 ConnectAsync(EndPointPair) 메서드는 원격 호스트 이름을 IP 주소로 resolve. EndpointPairRemoteServiceName 속성에 서비스 이름이 포함된 경우 ConnectAsync(EndPointPair) 메서드는 원격 서비스 이름을 UDP 포트 번호로 resolve.

기본적으로 인식되는 서비스 이름 문자열은 로컬 컴퓨터의 %windir%\System32\drivers\etc\services 파일에 나열된 서비스 이름입니다. 다른 서비스 이름 값은 DNS SRV 레코드에 대한 DNS(도메인 이름 시스템) 서버에 대한 이름 서비스 쿼리를 생성합니다.

RemoteHostNameRemoteServiceName 속성을 제공해야 합니다. RemoteHostName이 null이거나 RemoteServiceName이 null이거나 빈 문자열인 경우 오류가 발생합니다.

endpointPair 매개 변수에 전달된 EndpointPair 개체에 null LocalHostName 속성이 포함된 경우 시스템은 사용할 로컬 IP 주소를 제공합니다. endpointPair 매개 변수에 전달된 EndpointPair 개체에 빈 LocalServiceName 속성이 포함된 경우 시스템은 사용할 로컬 UDP 포트를 제공합니다.

DatagramSocket을 사용하여 UDP 데이터그램을 원격 네트워크 대상으로 보내는 두 가지 방법이 있습니다.

GetOutputStreamAsync 메서드를 사용하면 앱이 DatagramSocket 개체를 사용하여 UDP 데이터그램을 여러 네트워크 대상으로 보낼 수 있습니다. GetOutputStreamAsync 메서드가 호출될 때마다 앱은 remoteHostNameremoteServiceName 매개 변수에 대해 서로 다른 값을 설정할 수 있습니다.

DatagramSocket 개체의 단일 원격 엔드포인트에서 데이터를 수신하려면 앱이 MessageReceived 이벤트를 이벤트 처리기에 할당한 다음 엔드포인트Pair 매개 변수가 원격 엔드포인트 정보로 설정된 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가 됩니다.

255.255.255.255.255와 같은 브로드캐스트 IP 주소와 함께 ConnectAsync 를 사용하면 연결되지만 발견된 첫 번째 네트워크 어댑터를 통해서만 브로드캐스트됩니다. 사용 가능한 모든 어댑터에서 브로드캐스트하려면 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 매개 변수와 일치하는 들어오는 패킷만 DatagramSocket에서 MessageReceived 이벤트를 트리거합니다.

앱은 나중에 DatagramSocketOutputStream 속성에서 WriteAsync 메서드를 호출하거나 DataWriter 개체에 OutputStream을 전달하고 DataWriter 개체의 메서드를 호출하여 네트워크 데이터를 원격 네트워크 대상으로 보낼 수 있습니다.

remoteHostName 매개 변수는 원격 대상의 호스트 이름 또는 IP 주소를 포함할 수 있습니다. remoteServiceName 매개 변수는 원격 대상의 서비스 이름 또는 UDP 포트를 포함할 수 있습니다. remoteHostName 매개 변수에 호스트 이름이 포함된 경우 ConnectAsync 메서드는 원격 호스트 이름을 IP 주소로 resolve. remoteServiceName 매개 변수에 서비스 이름이 포함된 경우 ConnectAsync 메서드는 원격 서비스 이름을 UDP 포트 번호로 resolve.

remoteServiceName 매개 변수에서 기본적으로 인식되는 서비스 이름 문자열은 로컬 컴퓨터의 %windir%\System32\drivers\etc\services 파일에 나열된 서비스 이름입니다. 다른 서비스 이름 값은 DNS SRV 레코드에 대한 DNS(도메인 이름 시스템) 서버에 대한 이름 서비스 쿼리를 생성합니다.

remoteHostNameremoteServiceName 매개 변수를 제공해야 합니다. remoteHostName이 null이거나 remoteServiceName이 null이거나 빈 문자열인 경우 오류가 발생합니다.

DatagramSocket을 사용하여 UDP 데이터그램을 원격 네트워크 대상으로 보내는 두 가지 방법이 있습니다.

GetOutputStreamAsync 메서드를 사용하면 앱이 DatagramSocket 개체를 사용하여 UDP 데이터그램을 여러 네트워크 대상으로 보낼 수 있습니다. GetOutputStreamAsync 메서드가 호출될 때마다 앱은 remoteHostNameremoteServiceName 매개 변수에 대해 서로 다른 값을 설정할 수 있습니다.

DatagramSocket 개체의 단일 엔드포인트에서 데이터를 수신하려면 앱이 MessageReceived 이벤트를 이벤트 처리기에 할당한 다음 remoteHostNameremoteServiceName 매개 변수를 원격 엔드포인트 정보로 설정하여 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가 됩니다.

255.255.255.255.255와 같은 브로드캐스트 IP 주소와 함께 ConnectAsync 를 사용하면 연결되지만 발견된 첫 번째 네트워크 어댑터를 통해서만 브로드캐스트됩니다. 사용 가능한 모든 어댑터에서 브로드캐스트하려면 GetOutputStreamAsync를 사용합니다.

추가 정보

적용 대상