다음을 통해 공유


Windows.Devices.WiFiDirect.Services 네임스페이스

고유한 Wi-Fi Direct Services 구현을 지원합니다.

Wi-Fi Direct는 두 디바이스가 액세스 지점을 통해 기존 네트워크에 가입할 필요 없이 Wi-Fi를 사용하여 서로 직접 연결할 수 있는 기술입니다. Wi-Fi Direct Services는 한 디바이스( 서비스 광고주)가 Wi-Fi 직접 연결을 통해 다른 디바이스( 서비스 구직자)에 기능을 제공하는 방법입니다. 구직자는 세션을 설정하여 광고 서비스를 사용합니다. 지정된 디바이스는 여러 서비스를 보급하고 여러 서비스를 검색할 수도 있습니다. 구직자 및 광고주 역할은 디바이스가 특정 세션에서 상호 작용하는 방식과 관련하여 정의됩니다.

Wi-Fi Direct Services 사양은 여러 표준 서비스를 정의하지만 이 API는 Enable 서비스만 지원합니다. 보내기, 재생, 인쇄 또는 표시 기능을 지원하지 않습니다.

클래스

WiFiDirectService

Wi-Fi Direct 서비스를 나타냅니다. 이 클래스는 Wi-Fi Direct Service를 사용하려는 디바이스의 코드에서 서비스 공급자와 Wi-Fi Direct Service 세션을 설정하는 데 사용됩니다.

WiFiDirectServiceAdvertiser

서비스 광고주를 나타냅니다. 이 클래스는 Wi-Fi Direct Services를 보급하는 디바이스의 코드에서 서비스를 보급하는 데 사용됩니다.

WiFiDirectServiceAutoAcceptSessionConnectedEventArgs

WiFiDirectServiceAdvertiser.AutoAcceptSessionConnected 이벤트가 발생할 때 반환됩니다.

WiFiDirectServiceProvisioningInfo

Wi-Fi Direct Service에 대한 프로비저닝 정보를 포함합니다.

WiFiDirectServiceRemotePortAddedEventArgs

WiFiDirectServiceSession.RemotePortAdded 이벤트가 발생할 때 반환됩니다. 이벤트 처리기는 이 정보를 사용하여 새 포트에 대한 새 소켓 연결을 설정해야 합니다.

WiFiDirectServiceSession

WFDS(Wi-Fi Direct Services) 세션을 나타냅니다.

WiFiDirectServiceSessionDeferredEventArgs

WiFiDirectService.SessionDeferred 이벤트가 발생할 때 반환됩니다.

WiFiDirectServiceSessionRequest

Wi-Fi 직접 서비스 세션 요청에 대해 설명합니다.

WiFiDirectServiceSessionRequestedEventArgs

WiFiDirectServiceAdvertiser.SessionRequested 이벤트가 발생할 때 반환됩니다.

열거형

WiFiDirectServiceAdvertisementStatus

WiFiDirectServiceAdvertiser.AdvertisementStatus에 사용되는 값입니다.

WiFiDirectServiceConfigurationMethod

세션이 설정될 때 서비스 구성이 수행되는 방식을 설명하는 값입니다. 일반적으로 입력이 필요하지 않거나 세션의 한 디바이스에 PIN이 표시되고 다른 디바이스는 PIN을 입력해야 합니다.

WiFiDirectServiceError

WiFiDirectServiceAdvertiser.ServiceError 속성에 사용되는 값입니다.

WiFiDirectServiceIPProtocol

WiFiDirectServiceSession.RemotePortAdded 이벤트가 발생할 때 새 포트의 IP 프로토콜을 지정하는 상수를 정의합니다.

WiFiDirectServiceSessionErrorStatus

WiFiDirectServiceSession.ErrorStatus 속성에 사용되는 값입니다.

WiFiDirectServiceSessionStatus

Wi-Fi 직접 서비스 세션의 상태 설명하는 데 사용되는 값입니다.

WiFiDirectServiceStatus

서비스 상태 설명하는 데 사용되는 값입니다.

설명

그룹 소유자 설정(GO)

P2P(피어 투 피어) 그룹의 구성원 중 GO(그룹 소유자)인 멤버를 정확하게 제어할 수 있습니다. 코드는 WiFiDirectAdvertiser.PreferGroupOwnerMode 속성을 사용하여 지정된 광고주가 GO가 되도록 지정해야 합니다. 그러나 이전에 Wi-Fi Direct를 통해 두 디바이스를 페어링한 경우 해당 페어링에서 저장된 프로필의 Wi-Fi 직접 역할이 광고주의 지정된 기본 설정을 재정의합니다. P2P 페어링의 지정된 디바이스가 GO가 되도록 하려면 먼저 Windows.Devices.Enumeration 네임스페이스에서 제공하는 메서드를 사용하여 기존 페어링 데이터를 삭제해야 합니다.

페어링 프로필은 두 개의 MAC 주소를 페어링하므로 두 디바이스 간에 Wi-Fi Direct를 사용하는 모든 앱에 두 디바이스를 짝지어 둡니다. 앱은 이전에 디바이스와 페어링한 경우에도 페어링 프로필이 존재하거나 다른 앱에서 변경되지 않았다고 가정해서는 안 됩니다. 프로필 정보를 저장하고 나중에 여전히 true라고 가정하는 대신 현재 프로필에서 현재 프로필 정보를 가져와야 합니다. 다른 앱이 중간에 페어링 프로필을 변경했을 수 있습니다.

다음 코드는 로컬 디바이스와 다른 디바이스 간의 Wi-Fi 직접 페어링 프로필을 찾아 두 디바이스를 짝수로 처리합니다. 이 코드가 두 디바이스를 성공적으로 언페어링한 후 후속 페어링은 페어링 시 활성 상태인 WiFiDirectAdvertiser.PreferGroupOwnerMode 값을 준수합니다.

using Windows.Devices.Enumeration;

private async void Unpair_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
    if (DiscoveredServices.Items.Count > 0)
    {
        DiscoveredDeviceWrapper service = 
            (DiscoveredDeviceWrapper)DiscoveredServices.Items[DiscoveredServices.SelectedIndex];

        String[] aepId = service.DeviceInfo.Id.Split('#');
        String deviceSelector = "System.Devices.DeviceInstanceId:=\"SWD\\WiFiDirect\\" + aepId[1] + "\"";

        // Check if device is paired
        DeviceInformationCollection pairedDeviceCollection = 
            await DeviceInformation.FindAllAsync(deviceSelector, null, DeviceInformationKind.DeviceInterface);

        if (pairedDeviceCollection.Count > 0)
        {
            try
            {
                DeviceInformation devInfo = pairedDeviceCollection[0];
                await devInfo.Pairing.UnpairAsync();
                MainPage.Current.NotifyUser("UnpairAsync succeeded", NotifyType.StatusMessage);
            }

            catch (Exception ex)
            {
                MainPage.Current.NotifyUser("UnpairAsync failed: " + ex.Message, NotifyType.ErrorMessage);
            }
        }
    }
}

추가 정보