首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
ZeroMQ初步学习
时间:
2015-04-02 22:40:04
阅读:
244
评论:
0
收藏:
0
[点我收藏+]
标签:
zeromq
linux
网络编程
今天先来编译一下ZeroMQ的示例程序。
首先要先安装zeromq,使用默认的选项./configure, make, make install。
然后是zeromq的server的示例代码
#include
<
zmq
.
hpp
>
#include
<
string
>
#include
<
iostream
>
#include
<
unistd
.
h
>
int
main
(
)
{
/
/
Prepare our context
and
socket
zmq
:
:
context_t context
(
1
)
;
zmq
:
:
socket_t socket
(
context
,
ZMQ_REP
)
;
socket
.
bind
(
"tcp://*:5555"
)
;
while
(
true
)
{
zmq
:
:
message_t request
;
/
/
Wait
for
next
request from client
socket
.
recv
(
&
request
)
;
std
:
:
cout
<
<
"Received Hello"
<
<
std
:
:
endl
;
/
/
Do
some
‘
work
‘
sleep
(
1
)
;
/
/
Send reply back
to
client
zmq
:
:
message_t reply
(
5
)
;
memcpy
(
(
void
*
)
reply
.
data
(
)
,
"World"
,
5
)
;
socket
.
send
(
reply
)
;
}
return 0
;
}
编译:
g
+
+
-
g
-
Wall
-
fPIC
-
I
.
.
/
.
.
/
include
-
I
.
.
/
.
.
/
utils
-
shared
-
c server
.
cpp
-
o server
.
o
cc
-
L
.
.
/
.
.
/
lib
-
g
-
lstdc
+
+
-
lzmq
-
o server server
.
o
在编译的时候,如果找不到zmq库,别忘了把安装路径加入到/etc/ld.so.conf中,并执行ldconfig。
下面是client的示例程序
/
/
/
/
Hello World client
/
/
Connects REQ socket
to
tcp
:
/
/
localhost
:
5555
/
/
Sends
"Hello"
to
server
,
expects
"World"
back
/
/
#include
<
zmq
.
h
>
#include
<
string
.
h
>
#include
<
stdio
.
h
>
#include
<
unistd
.
h
>
int
main
(
void
)
{
void
*
context
=
zmq_init
(
1
)
;
/
/
Socket
to
talk
to
server
printf
(
"Connecting to hello world server…\n"
)
;
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
(
"Sending Hello %d…\n"
,
request_nbr
)
;
zmq_send
(
requester
,
&
request
,
0
)
;
zmq_msg_close
(
&
request
)
;
zmq_msg_t reply
;
zmq_msg_init
(
&
reply
)
;
zmq_recv
(
requester
,
&
reply
,
0
)
;
printf
(
"Received World %d\n"
,
request_nbr
)
;
zmq_msg_close
(
&
reply
)
;
}
zmq_close
(
requester
)
;
zmq_term
(
context
)
;
return 0
;
}
编译:
g
+
+
-
g
-
Wall
-
fPIC
-
I
.
.
/
.
.
/
include
-
I
.
.
/
.
.
/
utils
-
shared
-
c client
.
cpp
-
o client
.
o
cc
-
L
.
.
/
.
.
/
lib
-
g
-
lstdc
+
+
-
lzmq
-
o client client
.
o
下面运行一下:
[
xxx@xxx
-
vm
-
fc13 client
]
$
.
/
client
Connecting
to
hello world server…
Sending Hello 0…
Received World 0
Sending Hello 1…
Received World 1
Sending Hello 2…
Received World 2
Sending Hello 3…
Received World 3
Sending Hello 4…
Received World 4
Sending Hello 5…
^C
[
xxx@xxx
-
vm
-
fc13 client
]
$
[xxx
@xxx
-
vm
-
fc13 server
]
$
.
/
server
Received Hello
Received Hello
Received Hello
Received Hello
Received Hello
Received Hello
^C
[xxx
@xxx
-
vm
-
fc13 server
]
$
虽然使用的是示例程序,但是从代码上看,使用zeromq确实比直接使用socket要简单方便的多。更何况据说还高效。
今天只是简单的试用zeromq,以后就慢慢开始深入了。
参考:
http://zguide.zeromq.org/page:all
ZeroMQ初步学习
标签:
zeromq
linux
网络编程
原文地址:http://blog.csdn.net/nyist327/article/details/44837601
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!