본문 바로가기
프로그래밍/IoT

ZeroMQ 메시지브로커 C# C언어 예제

by makepluscode 2022. 12. 3.
반응형

C# 과 C 로 구현한 ZeroMQ message broker

ZeroMQ 는 메시지브로커 라이브러리로서 C, C++, C#, 자바스크립트, 다양한 언어를 지원한다. 임베디드 개발 과정에서 사용할 수 있는 간단한 메시지브로커 라이브러리 이다. C# 과 C 로 구현한 ZeroMQ 통신 예제를 정리한다.

ZeroMQ 메시지브로커

ZeroMQ C# C언어 통신

테스트 환경

  • Windows10, MSYS2 MINGW64, gcc (Rev6, Built by MSYS2 project) 12.2.0
  • Windows10 C++ Server
  • Windows10 C# Client

C언어로 구현된 ZeroMQ 서버

이 예제는 Windows MINGW 환경에서 테스트 되었다. MINGW 에서 pacman 을 통해 zeromq 라이브러리를 설치하자.

$ pacman -S mingw-w64-x86_64-zeromq

zmq socket 을 생성하고 5555 포트로 바인딩을 시도한다. 5555 포트를 통해 클라이언트가 바인드되면 메시지를 받고 보낸다.

#include <zmq.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <assert.h>

int main(void)
{
  void *context = zmq_ctx_new();
  void *responder = zmq_socket(context, ZMQ_REP);
  int rc = zmq_bind(responder, "tcp://*:5555");
  assert(rc == 0);

  while (1)
  {
    char buffer[16];
    zmq_recv(responder, buffer, 8, 0);
    sleep(1);
    zmq_send(responder, "World", 5, 0);
  }
  return 0;
}

ZeroMQ C# 클라이언트

클라이언트 socket 을 생성하고 서버와 연결한다. 연결후에 주기적으로 메시지를 보내고 받아서 출력한다.

using System;

using NetMQ;
using NetMQ.Sockets;

public class Program
{
    static void Main(string[] args)
    {
        byte[] msg = System.Text.Encoding.UTF8.GetBytes("Hello");

        using (var client = new RequestSocket())
        {
            client.Connect("tcp://127.0.0.1:5555");
            client.SendFrame(msg);

            String feedback = client.ReceiveFrameString();
            Console.WriteLine(feedback);
        }

    }
}

참고자료

ZeroMQ 메시지브로커 C++ 예제는 아래 글을 참고한다.

https://makepluscode.tistory.com/174

 

ZeroMQ 메시지브로커 C++ 예제

ZeroMQ 메시지브로커 C++ 예제 ZeroMQ 는 메시지브로커를 구현한 라이브러리 이다. ZeroMQ 는 C, C++, Javascript 등, 다양한 버전으로 배포된다. 임베디드 개발 과정에서 간단한 메시지브로커 라이브러리가

makepluscode.tistory.com

ZeroMQ 에 대해 자세히 알고 싶다면,  ZeroMQ 공식홈페이지를 살펴본다.

https://zeromq.org/

 

ZeroMQ

An open-source universal messaging library

zeromq.org

반응형

'프로그래밍 > IoT' 카테고리의 다른 글

ZeroMQ 메시지브로커 NodeJS & C  (0) 2022.12.30
ZeroMQ 메시지브로커 C++ 예제  (0) 2022.12.03
Node.js 로 구현한 ZeroMQ 통신  (0) 2022.12.03