반응형
C# 과 C 로 구현한 ZeroMQ message broker
ZeroMQ 는 메시지브로커 라이브러리로서 C, C++, C#, 자바스크립트, 다양한 언어를 지원한다. 임베디드 개발 과정에서 사용할 수 있는 간단한 메시지브로커 라이브러리 이다. C# 과 C 로 구현한 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 에 대해 자세히 알고 싶다면, ZeroMQ 공식홈페이지를 살펴본다.
반응형
'프로그래밍 > IoT' 카테고리의 다른 글
ZeroMQ 메시지브로커 NodeJS & C (0) | 2022.12.30 |
---|---|
ZeroMQ 메시지브로커 C++ 예제 (0) | 2022.12.03 |
Node.js 로 구현한 ZeroMQ 통신 (0) | 2022.12.03 |