nanomsg的使用与分析

来源:互联网 发布:淘宝 桌游 编辑:程序博客网 时间:2024/06/07 07:41

本文对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 <libc.h>

#include <unistd.h>
#include <string.h>
#include <pthread.h>

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



Socket设置

prio1.png

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 ();

0 1
原创粉丝点击