개발 노트

MQTT정리 본문

프로그래밍/IT용어설명

MQTT정리

알 수 없는 사용자 2022. 3. 3. 09:47

MQTT 또한 사물 인터넷 용으로 나온 프로토콜이긴 하지만 여타 응용 프로그램에서 사용하지 않을 이유가 없다

 

일반적인 서버 클라이언트 개념으로 보면

 

서버 역할을 MQTT Broker가 클라이언트 역할을 MQTT CLIENT가 수행합니다. 하지만

서버 클라이언트 처럼 서버 측에서 서비스를 제공하는 방식이 아니다

BROKER와 연결된 특정 클라이언트가 서비스를 수행하는 주체가 될 수 있습니다.

즉 MQTT BROKER는 말 그대로 통신 간의 중계 역할에 더 초점을 둡니다.



mqtt는 iso 표준 발행-구독 기반의 메시징 프로토콜이다. TCP/IP 프로토콜 위에서 동작한다

작은 코드 공간이 필요하거나 네트워크 대역폭이 제한되는 원격 위치와의 연결을 위해 설계되어 있다

 

mqtt 사용을 위해 대표적인 메시지 브로커인 모스키토 브로커를 설치한다

 

Mosquitto 실행 테스트

모스키토 설치 경로에서 명령 창을 열고 아래 명령을 실행합니다

"NAME" 따옴표 안에 이름으로 토픽을 구독(Subscribe)하겠다는 명령어입니다.

 

명령 프롬프트 1

mosquitto_sub -t "MY_TOPIC"

 

 

C# mqtt 예제

using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Client.Options;
using System.Threading;
using System.Threading.Tasks;
using MQTTnet.Client.Connecting;

namespace MqttTest
{
    internal class Program
    {
        private static async Task Main()
        {
            await ClientTest();
        }

        private static async Task ClientTest()
        {
            var mqttClient = new MqttFactory().CreateMqttClient();

            var options = new MqttClientOptionsBuilder().WithTcpServer("xxx.xxx.xxx.xxx", 1883).WithCredentials("username", "password").Build();

            var message = new MqttApplicationMessageBuilder().WithTopic("U001/order").WithPayload("테스트 메시지입니다.").WithExactlyOnceQoS().Build();

            var result = await mqttClient.ConnectAsync(options, CancellationToken.None);

            if (result.ResultCode == MqttClientConnectResultCode.Success)
            {
                await mqttClient.PublishAsync(message);
            }
        }
    }
}

'프로그래밍 > IT용어설명' 카테고리의 다른 글

IP 관련 용어 정리  (0) 2024.01.22
TCP/IP , MQTT  (0) 2022.11.22
MQTT 예제 SubScriber Publisher  (0) 2022.03.03
윈도우 자동실행  (0) 2022.03.02
MQTT 스터디  (0) 2022.03.02