

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 클라이언트 디바이스 통신 테스트
<a name="test-client-device-communications"></a>

클라이언트 디바이스는를 사용하여 코어 디바이스를 검색, 연결 및 통신 AWS IoT Device SDK 할 수 있습니다. 에서 Greengrass 검색 클라이언트 AWS IoT Device SDK 를 사용하여 클라이언트 디바이스가 연결할 수 있는 코어 디바이스에 대한 정보를 반환하는 [Greengrass 검색 API](greengrass-discover-api.md)를 사용할 수 있습니다. API 응답은 연결할 MQTT 브로커 엔드포인트와 각 코어 디바이스의 ID를 확인하는 데 사용할 인증서를 포함합니다. 그런 다음 클라이언트 디바이스는 코어 디바이스에 성공적으로 연결될 때까지 각 엔드포인트를 시도할 수 있습니다.

클라이언트 디바이스는 연결한 코어 디바이스만 검색할 수 있습니다. 클라이언트 디바이스와 코어 디바이스 간의 통신을 테스트하기 전에 클라이언트 디바이스를 코어 디바이스에 연결해야 합니다. 자세한 내용은 [클라이언트 디바이스 연결](associate-client-devices.md) 단원을 참조하십시오.

Greengrass 검색 API는 사용자가 지정한 코어 디바이스 MQTT 브로커 엔드포인트를 반환합니다. [IP 감지기 구성 요소](ip-detector-component.md)를 사용하여 이러한 엔드포인트를 관리할 수도 있고 각 코어 디바이스에 대해 수동으로 관리할 수도 있습니다. 자세한 내용은 [코어 디바이스 엔드포인트 관리](manage-core-device-endpoints.md) 단원을 참조하십시오.

**참고**  
Greengrass 검색 API를 사용하려면 클라이언트 디바이스에 `greengrass:Discover` 권한이 있어야 합니다. 자세한 내용은 [클라이언트 디바이스에 대한 최소 AWS IoT 정책](device-auth.md#client-device-minimal-iot-policy) 단원을 참조하십시오.

 AWS IoT Device SDK 는 여러 프로그래밍 언어로 제공됩니다. 자세한 내용은 *AWS IoT Core 개발자 안내서*의 [AWS IoT 디바이스 SDK](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sdks.html) 섹션을 참조하세요.

**Topics**
+ [통신 테스트(Python)](#test-client-device-communications-python)
+ [통신 테스트(C\$1\$1)](#test-client-device-communications-cpp)
+ [통신 테스트(JavaScript)](#test-client-device-communications-javascript)
+ [통신 테스트(Java)](#test-client-device-communications-java)

## 통신 테스트(Python)
<a name="test-client-device-communications-python"></a>

이 섹션에서는 [Python용AWS IoT Device SDK v2](https://github.com/aws/aws-iot-device-sdk-python-v2)의 Greengrass 검색 샘플을 사용하여 클라이언트 디바이스와 코어 디바이스 간의 통신을 테스트합니다.

**중요**  
 AWS IoT Device SDK v2 for Python을 사용하려면 디바이스가 Python 3.6 이상을 실행해야 합니다.

**통신을 테스트하려면(Python용AWS IoT Device SDK v2)**

1. <a name="download-iot-device-sdk-python-v2"></a>클라이언트 디바이스로 연결할 AWS IoT 사물에 [AWS IoT Device SDK Python용 v2](https://github.com/aws/aws-iot-device-sdk-python-v2)를 다운로드하여 설치합니다.

   클라이언트 디바이스에서 다음을 수행합니다.

   1.  AWS IoT Device SDK v2 for Python 리포지토리를 복제하여 다운로드합니다.

      ```
      git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
      ```

   1. Python용 AWS IoT Device SDK v2를 설치합니다.

      ```
      python3 -m pip install --user ./aws-iot-device-sdk-python-v2
      ```

1. <a name="cd-iot-device-sdk-python-v2"></a> AWS IoT Device SDK v2 for Python의 샘플 폴더로 변경합니다.

   ```
   cd aws-iot-device-sdk-python-v2/samples/greengrass
   ```

1. <a name="test-client-device-communications-application-intro"></a>샘플 Greengrass 검색 애플리케이션을 실행합니다. 이 애플리케이션에는 클라이언트 디바이스 사물 이름, 사용할 MQTT 주제 및 메시지, 연결을 인증하고 보호하는 인증서를 지정하는 인수가 필요합니다. 다음 예제에서는 `clients/MyClientDevice1/hello/world` 주제에 Hello World 메시지를 전송합니다.<a name="test-client-device-communications-application-command-replace"></a>
   + *MyClientDevice1*을 클라이언트 디바이스의 사물 이름으로 바꿉니다.
   + *\$1/certs/AmazonRootCA1.pem*을 클라이언트 디바이스의 Amazon 루트 CA 인증서 경로로 바꿉니다.
   + *\$1/certs/device.pem.crt*를 클라이언트 디바이스의 디바이스 인증서 경로로 바꿉니다.
   + *\$1/certs/private.pem.key*를 클라이언트 디바이스의 프라이빗 키 파일 경로로 바꿉니다.
   + *us-east-1*을 클라이언트 디바이스와 코어 디바이스가 작동하는 AWS 리전으로 바꿉니다.

   ```
   python3 basic_discovery.py \\
     --thing_name MyClientDevice1 \\
     --topic 'clients/MyClientDevice1/hello/world' \\
     --message 'Hello World!' \\
     --ca_file ~/certs/AmazonRootCA1.pem \\
     --cert ~/certs/device.pem.crt \\
     --key ~/certs/private.pem.key \\
     --region us-east-1 \\
     --verbosity Warn
   ```

   <a name="test-client-device-communications-application-output-intro"></a>검색 샘플 애플리케이션은 메시지를 10회 전송하고 연결을 해제합니다. 또한 메시지를 게시하는 주제와 동일한 주제를 구독합니다. 출력에서 애플리케이션이 해당 주제에 대한 MQTT 메시지를 수신했음을 나타내는 경우 클라이언트 디바이스는 코어 디바이스와 성공적으로 통신할 수 있습니다.

   ```
   Performing greengrass discovery...
   awsiot.greengrass_discovery.DiscoverResponse(gg_groups=[awsiot.greengrass_discovery.GGGroup(gg_group_id='greengrassV2-coreDevice-MyGreengrassCore', cores=[awsiot.greengrass_discovery.GGCore(thing_arn='arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore', connectivity=[awsiot.greengrass_discovery.ConnectivityInfo(id='203.0.113.0', host_address='203.0.113.0', metadata='', port=8883)])], certificate_authorities=['-----BEGIN CERTIFICATE-----\
   MIICiT...EXAMPLE=\
   -----END CERTIFICATE-----\
   '])])
   Trying core arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore at host 203.0.113.0 port 8883
   Connected!
   Published topic clients/MyClientDevice1/hello/world: {"message": "Hello World!", "sequence": 0}
   
   Publish received on topic clients/MyClientDevice1/hello/world
   b'{"message": "Hello World!", "sequence": 0}'
   Published topic clients/MyClientDevice1/hello/world: {"message": "Hello World!", "sequence": 1}
   
   Publish received on topic clients/MyClientDevice1/hello/world
   b'{"message": "Hello World!", "sequence": 1}'
   
   ...
   
   Published topic clients/MyClientDevice1/hello/world: {"message": "Hello World!", "sequence": 9}
   
   Publish received on topic clients/MyClientDevice1/hello/world
   b'{"message": "Hello World!", "sequence": 9}'
   ```

   <a name="test-client-device-communications-application-troubleshooting"></a>그 대신에 애플리케이션에서 오류가 출력되면 [Greengrass 검색 문제 해결](troubleshooting-client-devices.md#greengrass-discovery-issues)을 참조하세요.

   <a name="test-client-device-communications-application-view-core-logs"></a>코어 디바이스에서 Greengrass 로그를 보고 클라이언트 디바이스가 메시지를 성공적으로 연결하고 전송하는지 확인할 수도 있습니다. 자세한 내용은 [AWS IoT Greengrass 로그 모니터링](monitor-logs.md) 단원을 참조하십시오.

## 통신 테스트(C\$1\$1)
<a name="test-client-device-communications-cpp"></a>

이 섹션에서는 [AWS IoT Device SDK v2 for C\$1\$1](https://github.com/aws/aws-iot-device-sdk-cpp-v2)의 Greengrass 검색 샘플을 사용하여 클라이언트 디바이스와 코어 디바이스 간의 통신을 테스트합니다.

<a name="iot-device-sdk-cpp-v2-build-requirements-intro"></a>C\$1\$1용 AWS IoT Device SDK v2를 빌드하려면 디바이스에 다음 도구가 있어야 합니다.<a name="iot-device-sdk-cpp-v2-build-requirements"></a>
+ C\$1\$1 11 이상
+ CMake 3.1 이상
+ 다음 컴파일러 중 하나입니다.
  + GCC 4.8 이상
  + Clang 3.9 이상
  + MSVC 2015 이상

**통신을 테스트하려면(C\$1\$1용AWS IoT Device SDK v2)**

1. 클라이언트 디바이스로 연결할 AWS IoT 사물에 [AWS IoT Device SDK C\$1\$1용 v2](https://github.com/aws/aws-iot-device-sdk-cpp-v2)를 다운로드하고 빌드합니다.

   클라이언트 디바이스에서 다음을 수행합니다.

   1. C\$1\$1 워크스페이스용 AWS IoT Device SDK v2에 대한 폴더를 생성하고 변경합니다.

      ```
      cd
      mkdir iot-device-sdk-cpp
      cd iot-device-sdk-cpp
      ```

   1.  AWS IoT Device SDK v2 for C\$1\$1 리포지토리를 복제하여 다운로드합니다. `--recursive` 플래그는 하위 모듈을 다운로드하도록 지정합니다.

      ```
      git clone --recursive https://github.com/aws/aws-iot-device-sdk-cpp-v2.git
      ```

   1. C\$1\$1용 AWS IoT Device SDK v2 빌드 출력에 대한 폴더를 생성하고 변경합니다.

      ```
      mkdir aws-iot-device-sdk-cpp-v2-build
      cd aws-iot-device-sdk-cpp-v2-build
      ```

   1. C\$1\$1용 AWS IoT Device SDK v2를 빌드합니다.

      ```
      cmake -DCMAKE_INSTALL_PREFIX="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" ../aws-iot-device-sdk-cpp-v2
      cmake --build . --target install
      ```

1. C\$1\$1용 AWS IoT Device SDK v2에서 Greengrass 검색 샘플 애플리케이션을 빌드합니다. 해결 방법:

   1. 를 C\$1\$1용 AWS IoT Device SDK v2의 Greengrass 검색 샘플 폴더로 변경합니다.

      ```
      cd ../aws-iot-device-sdk-cpp-v2/samples/greengrass/basic_discovery
      ```

   1. Greengrass 검색 샘플 빌드 출력을 위한 폴더를 생성하고 해당 폴더로 변경합니다.

      ```
      mkdir build
      cd build
      ```

   1. Greengrass 검색 샘플 애플리케이션을 빌드합니다.

      ```
      cmake -DCMAKE_PREFIX_PATH="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" ..
      cmake --build . --config "Release"
      ```

1. <a name="test-client-device-communications-application-scanner-intro"></a>샘플 Greengrass 검색 애플리케이션을 실행합니다. 이 애플리케이션에는 클라이언트 디바이스 사물 이름, 사용할 MQTT 주제, 연결을 인증하고 보호하는 인증서를 지정하는 인수가 필요합니다. 다음 예제에서는 `clients/MyClientDevice1/hello/world` 주제를 구독하고 명령줄에 입력한 메시지를 동일한 주제에 게시합니다.<a name="test-client-device-communications-application-command-replace"></a>
   + *MyClientDevice1*을 클라이언트 디바이스의 사물 이름으로 바꿉니다.
   + *\$1/certs/AmazonRootCA1.pem*을 클라이언트 디바이스의 Amazon 루트 CA 인증서 경로로 바꿉니다.
   + *\$1/certs/device.pem.crt*를 클라이언트 디바이스의 디바이스 인증서 경로로 바꿉니다.
   + *\$1/certs/private.pem.key*를 클라이언트 디바이스의 프라이빗 키 파일 경로로 바꿉니다.
   + *us-east-1*을 클라이언트 디바이스와 코어 디바이스가 작동하는 AWS 리전으로 바꿉니다.

   ```
   ./basic-discovery \
     --thing_name MyClientDevice1 \
     --topic 'clients/MyClientDevice1/hello/world' \
     --ca_file ~/certs/AmazonRootCA1.pem \
     --cert ~/certs/device.pem.crt \
     --key ~/certs/private.pem.key \
     --region us-east-1
   ```

   <a name="test-client-device-communications-application-scanner-output-intro"></a>검색 샘플 애플리케이션이 주제를 구독하고 게시할 메시지를 입력하라는 메시지를 표시합니다.

   ```
   Connecting to group greengrassV2-coreDevice-MyGreengrassCore with thing arn arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore, using endpoint 203.0.113.0:8883
   Connected to group greengrassV2-coreDevice-MyGreengrassCore, using connection to 203.0.113.0:8883
   Successfully subscribed to clients/MyClientDevice1/hello/world
   Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press enter. Enter 'exit' to exit this program.
   ```

   <a name="test-client-device-communications-application-troubleshooting"></a>그 대신에 애플리케이션에서 오류가 출력되면 [Greengrass 검색 문제 해결](troubleshooting-client-devices.md#greengrass-discovery-issues)을 참조하세요.

1. <a name="test-client-device-communications-application-scanner-input"></a>메시지를 입력합니다(예: **Hello World\$1**).

   ```
   Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press enter. Enter 'exit' to exit this program.
   Hello World!
   ```

   <a name="test-client-device-communications-application-scanner-input-output"></a>출력에서 애플리케이션이 해당 주제에 대한 MQTT 메시지를 수신했음을 나타내는 경우 클라이언트 디바이스는 코어 디바이스와 성공적으로 통신할 수 있습니다.

   ```
   Operation on packetId 2 Succeeded
   Publish received on topic clients/MyClientDevice1/hello/world
   Message:
   Hello World!
   ```

   <a name="test-client-device-communications-application-view-core-logs"></a>코어 디바이스에서 Greengrass 로그를 보고 클라이언트 디바이스가 메시지를 성공적으로 연결하고 전송하는지 확인할 수도 있습니다. 자세한 내용은 [AWS IoT Greengrass 로그 모니터링](monitor-logs.md) 단원을 참조하십시오.

## 통신 테스트(JavaScript)
<a name="test-client-device-communications-javascript"></a>

이 섹션에서는 [JavaScript용AWS IoT Device SDK v2](https://github.com/aws/aws-iot-device-sdk-js-v2)의 Greengrass 검색 샘플을 사용하여 클라이언트 디바이스와 코어 디바이스 간의 통신을 테스트합니다.

**중요**  
JavaScript용 AWS IoT Device SDK v2를 사용하려면 디바이스에서 노드 v10.0 이상을 실행해야 합니다.

**통신을 테스트하려면(JavaScript용AWS IoT Device SDK v2)**

1. [AWS IoT Device SDK v2 for JavaScript](https://github.com/aws/aws-iot-device-sdk-js-v2)를 다운로드하여 클라이언트 디바이스로 연결할 AWS IoT 사물에 설치합니다.

   클라이언트 디바이스에서 다음을 수행합니다.

   1.  AWS IoT Device SDK v2 for JavaScript 리포지토리를 복제하여 다운로드합니다.

      ```
      git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
      ```

   1. JavaScript용 AWS IoT Device SDK v2를 설치합니다.

      ```
      cd aws-iot-device-sdk-js-v2
      npm install
      ```

1.  AWS IoT Device SDK v2 for JavaScript에서 Greengrass 검색 샘플 폴더로 변경합니다.

   ```
   cd samples/node/greengrass/basic_discovery
   ```

1. Greengrass 검색 샘플 애플리케이션을 설치합니다.

   ```
   npm install
   ```

1. <a name="test-client-device-communications-application-intro"></a>샘플 Greengrass 검색 애플리케이션을 실행합니다. 이 애플리케이션에는 클라이언트 디바이스 사물 이름, 사용할 MQTT 주제 및 메시지, 연결을 인증하고 보호하는 인증서를 지정하는 인수가 필요합니다. 다음 예제에서는 `clients/MyClientDevice1/hello/world` 주제에 Hello World 메시지를 전송합니다.<a name="test-client-device-communications-application-command-replace"></a>
   + *MyClientDevice1*을 클라이언트 디바이스의 사물 이름으로 바꿉니다.
   + *\$1/certs/AmazonRootCA1.pem*을 클라이언트 디바이스의 Amazon 루트 CA 인증서 경로로 바꿉니다.
   + *\$1/certs/device.pem.crt*를 클라이언트 디바이스의 디바이스 인증서 경로로 바꿉니다.
   + *\$1/certs/private.pem.key*를 클라이언트 디바이스의 프라이빗 키 파일 경로로 바꿉니다.
   + *us-east-1*을 클라이언트 디바이스와 코어 디바이스가 작동하는 AWS 리전으로 바꿉니다.

   ```
   node dist/index.js \
     --thing_name MyClientDevice1 \
     --topic 'clients/MyClientDevice1/hello/world' \
     --message 'Hello World!' \
     --ca_file ~/certs/AmazonRootCA1.pem \
     --cert ~/certs/device.pem.crt \
     --key ~/certs/private.pem.key \
     --region us-east-1 \
     --verbose warn
   ```

   <a name="test-client-device-communications-application-output-intro"></a>검색 샘플 애플리케이션은 메시지를 10회 전송하고 연결을 해제합니다. 또한 메시지를 게시하는 주제와 동일한 주제를 구독합니다. 출력에서 애플리케이션이 해당 주제에 대한 MQTT 메시지를 수신했음을 나타내는 경우 클라이언트 디바이스는 코어 디바이스와 성공적으로 통신할 수 있습니다.

   ```
   Discovery Response:
   {"gg_groups":[{"gg_group_id":"greengrassV2-coreDevice-MyGreengrassCore","cores":[{"thing_arn":"arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore","connectivity":[{"id":"203.0.113.0","host_address":"203.0.113.0","port":8883,"metadata":""}]}],"certificate_authorities":["-----BEGIN CERTIFICATE-----\nMIICiT...EXAMPLE=\n-----END CERTIFICATE-----\n"]}]}
   Trying endpoint={"id":"203.0.113.0","host_address":"203.0.113.0","port":8883,"metadata":""}
   [WARN] [2021-06-12T00:46:45Z] [00007f90c0e8d700] [socket] - id=0x7f90b8018710 fd=26: setsockopt() for NO_SIGNAL failed with errno 92. If you are having SIGPIPE signals thrown, you may want to install a signal trap in your application layer.
   Connected to endpoint={"id":"203.0.113.0","host_address":"203.0.113.0","port":8883,"metadata":""}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":1}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":2}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":3}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":4}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":5}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":6}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":7}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":8}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":9}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":10}
   Complete!
   ```

   <a name="test-client-device-communications-application-troubleshooting"></a>그 대신에 애플리케이션에서 오류가 출력되면 [Greengrass 검색 문제 해결](troubleshooting-client-devices.md#greengrass-discovery-issues)을 참조하세요.

   <a name="test-client-device-communications-application-view-core-logs"></a>코어 디바이스에서 Greengrass 로그를 보고 클라이언트 디바이스가 메시지를 성공적으로 연결하고 전송하는지 확인할 수도 있습니다. 자세한 내용은 [AWS IoT Greengrass 로그 모니터링](monitor-logs.md) 단원을 참조하십시오.

## 통신 테스트(Java)
<a name="test-client-device-communications-java"></a>

이 섹션에서는 [Java용AWS IoT Device SDK v2](https://github.com/aws/aws-iot-device-sdk-java-v2)의 Greengrass 검색 샘플을 사용하여 클라이언트 디바이스와 코어 디바이스 간의 통신을 테스트합니다.

**중요**  
Java용 AWS IoT Device SDK v2를 빌드하려면 디바이스에 다음 도구가 있어야 합니다.  
Java 8 이상(Java 폴더를 가리키는 `JAVA_HOME` 포함)
Apache Maven

**통신을 테스트하려면(Java용AWS IoT Device SDK v2)**

1. [AWS IoT Device SDK Java용 v2](https://github.com/aws/aws-iot-device-sdk-java-v2)를 다운로드하여 클라이언트 디바이스로 연결할 AWS IoT 사물에 빌드합니다.

   클라이언트 디바이스에서 다음을 수행합니다.

   1.  AWS IoT Device SDK v2 for Java 리포지토리를 복제하여 다운로드합니다.

      ```
      git clone https://github.com/aws/aws-iot-device-sdk-java-v2.git
      ```

   1. 를 Java용 AWS IoT Device SDK v2 폴더로 변경합니다.

   1. Java용 AWS IoT Device SDK v2를 빌드합니다.

      ```
      cd aws-iot-device-sdk-java-v2
      mvn versions:use-latest-versions -Dincludes="software.amazon.awssdk.crt*"
      mvn clean install
      ```

1. <a name="test-client-device-communications-application-scanner-intro"></a>샘플 Greengrass 검색 애플리케이션을 실행합니다. 이 애플리케이션에는 클라이언트 디바이스 사물 이름, 사용할 MQTT 주제, 연결을 인증하고 보호하는 인증서를 지정하는 인수가 필요합니다. 다음 예제에서는 `clients/MyClientDevice1/hello/world` 주제를 구독하고 명령줄에 입력한 메시지를 동일한 주제에 게시합니다.<a name="test-client-device-communications-application-command-replace"></a>
   + *MyClientDevice1*의 두 인스턴스 모두 클라이언트 디바이스의 사물 이름으로 바꿉니다.
   + *\$1HOME/certs/AmazonRootCA1.pem*을 클라이언트 디바이스의 Amazon 루트 CA 인증서 경로로 바꿉니다.
   + *\$1HOME/certs/device.pem.crt*를 클라이언트 디바이스의 디바이스 인증서 경로로 바꿉니다.
   + *\$1HOME/certs/private.pem.key*를 클라이언트 디바이스의 프라이빗 키 파일 경로로 바꿉니다.
   + *us-east-1*을 클라이언트 디바이스와 코어 디바이스가 작동하는 AWS 리전 로 바꿉니다.

   ```
   DISCOVERY_SAMPLE_ARGS="--thing_name MyClientDevice1 \
     --topic 'clients/MyClientDevice1/hello/world' \
     --ca_file $HOME/certs/AmazonRootCA1.pem \
     --cert $HOME/certs/device.pem.crt \
     --key $HOME/certs/private.pem.key \
     --region us-east-1"
   
   mvn exec:java -pl samples/Greengrass/Discovery \
     -Dexec.mainClass=greengrass.BasicDiscovery \
     -Dexec.args="$DISCOVERY_SAMPLE_ARGS"
   ```

   <a name="test-client-device-communications-application-scanner-output-intro"></a>검색 샘플 애플리케이션이 주제를 구독하고 게시할 메시지를 입력하라는 메시지를 표시합니다.

   ```
   Connecting to group ID greengrassV2-coreDevice-MyGreengrassCore, with thing arn arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore, using endpoint 203.0.113.0:8883
   Started a clean session
   Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press Enter. Type 'exit' or 'quit' to exit this program:
   ```

   <a name="test-client-device-communications-application-troubleshooting"></a>그 대신에 애플리케이션에서 오류가 출력되면 [Greengrass 검색 문제 해결](troubleshooting-client-devices.md#greengrass-discovery-issues)을 참조하세요.

1. <a name="test-client-device-communications-application-scanner-input"></a>메시지를 입력합니다(예: **Hello World\$1**).

   ```
   Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press Enter. Type 'exit' or 'quit' to exit this program:
   Hello World!
   ```

   <a name="test-client-device-communications-application-scanner-input-output"></a>출력에서 애플리케이션이 해당 주제에 대한 MQTT 메시지를 수신했음을 나타내는 경우 클라이언트 디바이스는 코어 디바이스와 성공적으로 통신할 수 있습니다.

   ```
   Message received on topic clients/MyClientDevice1/hello/world: Hello World!
   ```

   <a name="test-client-device-communications-application-view-core-logs"></a>코어 디바이스에서 Greengrass 로그를 보고 클라이언트 디바이스가 메시지를 성공적으로 연결하고 전송하는지 확인할 수도 있습니다. 자세한 내용은 [AWS IoT Greengrass 로그 모니터링](monitor-logs.md) 단원을 참조하십시오.