zeromq 클라이언트 서버 hello world
7423 단어 zeromq
gcc -Wall -g hwclient.c -lzmq -o hwclient
hwclient.c: In function ‘main’:
hwclient.c:21:9: error: too few arguments to function ‘zmq_send’
zmq_send (requester, &request, 0);
^~~~~~~~
In file included from hwclient.c:1:0:
/usr/local/include/zmq.h:430:16: note: declared here
ZMQ_EXPORT int zmq_send (void *s, const void *buf, size_t len, int flags);
^~~~~~~~
hwclient.c:26:9: error: too few arguments to function ‘zmq_recv’
zmq_recv (requester, &reply, 0);
^~~~~~~~
In file included from hwclient.c:1:0:
/usr/local/include/zmq.h:432:16: note: declared here
ZMQ_EXPORT int zmq_recv (void *s, void *buf, size_t len, int flags);
그리고 zmq를 보러 갑니다.h의 원본 코드, 발견 zmq_recv 및 zmq_send 함수는 모두 네 개의 매개 변수가 있다.
ZMQ_EXPORT int zmq_send (void *s, const void *buf, size_t len, int flags);
ZMQ_EXPORT int zmq_recv (void *s, void *buf, size_t len, int flags);
그리고 저는 hwclient에 있습니다.c 안에 이 두 함수 매개 변수에 모두 0을 추가했습니다. 컴파일은 통과했습니다!클라이언트는 C 언어로 구현됩니다.
//hwclient.c
#include
#include
#include
#include
int main (void)
{
void *context = zmq_init (1);
//
printf (" hello world ...
");
void *requester = zmq_socket (context, ZMQ_REQ);
zmq_connect (requester, "tcp://localhost:5555");
int request_nbr;
for (request_nbr = 0; request_nbr != 10; request_nbr++) {
zmq_msg_t request;
zmq_msg_init_size (&request, 5);
memcpy (zmq_msg_data (&request), "Hello", 5);
printf (" Hello %d...
", request_nbr);
zmq_send (requester, &request, 0,0);
zmq_msg_close (&request);
zmq_msg_t reply;
zmq_msg_init (&reply);
zmq_recv (requester, &reply, 0,0);
printf (" World %d
", request_nbr);
zmq_msg_close (&reply);
}
zmq_close (requester);
zmq_term (context);
return 0;
}
C++로 작성된 클라이언트 코드는 다음과 같습니다.
//hwserver.c
#include
#include
#include
#include
int main () {
//
zmq::context_t context (1);
zmq::socket_t socket (context, ZMQ_REP);
socket.bind ("tcp://*:5555");
while (true) {
zmq::message_t request;
//
socket.recv (&request);
std::cout << " Hello" << std::endl;
// “ ”
sleep (1);
// World
zmq::message_t reply (5);
memcpy ((void *) reply.data (), "World", 5);
socket.send (reply);
}
return 0;
}
terminal 두 개 켜고 하나../hwclient, 하나./hwserver, 결과는 다음과 같습니다.
./server
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
./hwclient
hello world ...
Hello 0...
World 0
Hello 1...
World 1
Hello 2...
World 2
Hello 3...
World 3
Hello 4...
World 4
Hello 5...
World 5
Hello 6...
World 6
Hello 7...
World 7
Hello 8...
World 8
Hello 9...
World 9
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZMQ의 REQ 복습. - ROUTER.서버측 코드: 클라이언트 코드(WSGI 연결당 개별 스레드 아날로그)...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.