nanomsg的使用与分析

本文对nanomsg进行系统讲解( socket不同类型的区别):


1.pull/push和rep/req的区别:

对于pull/push,客户端为push,其send数据后,server端会立即接收到

对于rep/req,客户端为req,其send数据后,客户端并不会立即发送给client,客户端必须再执行recv调用后,才会真正send数据


2. pair和req/req区别:

pair中,客户端只要send数据,server端就会接收到,客户端不必连续执行send,recv。但是,pair是一对一的,也就是说



附:

libc.h在linux是找不到的(XOS下才有),按照如下方法换成linux的.h,编译的时候要加上-pthread和最后的-lanl选项

//#include

#include
#include
#include

gcc -pthread reqrep.c /usr/local/lib/libnanomsg.a -o reqrep -lanl



Socket设置

nanomsg的使用与分析_第1张图片

int req;
int sndprio;
char buf [64];

/*  Open a REQ socket. */
nn_init ();
req = nn_socket (AF_SP, NN_REQ);

/*  Connect to 3 servers in New York and 1 in London. */
sndprio = 1;
nn_setsockopt (req, NN_SOL_SOCKET, NN_SNDPRIO, &sndprio, sizeof (int));
nn_connect (req, "tcp://newyorksrv001");
nn_connect (req, "tcp://newyorksrv002");
nn_connect (req, "tcp://newyorksrv003");
sndprio = 2;
nn_setsockopt (req, NN_SOL_SOCKET, NN_SNDPRIO, &sndprio, sizeof (int));
nn_connect (req, "tcp://londonsrv001");

/*  Do your work. */
while (1) {
    nn_send (req, "MyRequest", 9, 0);
    nn_recv (req, buf, sizeof (buf), 0);
    process_reply (buf);
}

/*  Clean up. */
nn_close (req);
nn_term ();

你可能感兴趣的:(nanomsg的使用与分析)