aardio 官方社区

用户名  找回密码
 注册会员

QQ登录

只需一步,快速开始

帖子
查看: 10935|回复: 5

网络应用-zeromq服务端范例中一处不明,盼指点。

[复制链接]

9

主题

68

回帖

1001

积分

荣誉会员

积分
1001
发表于 2013-3-29 16:21:47 | 显示全部楼层 |阅读模式
启动网络应用-zeromq服务端范例中代码之后,弹出控制台,显示“服务端已启动”,在不启动客户端的情况下,会一直停留在这里。按照我的理解,程序应该是执行到了while循环中的“..console.log("服务端已启动")”这一句了。我不理解的是,为啥程序会一直停留在这一句,而不继续往下执行呢?下面不是还有很多print语句吗?麻烦有搞懂的高手给小弟解惑,小弟先行谢过。我对zeromq兴趣还是蛮大的,就是水平不够,会经常卡壳。

范例代码贴出如下:
  1. //服务端
  2. import zeromq

  3. var context = zeromq.context(1)

  4. //replay模式socket与客户端的request模式配对使用
  5. var responder = context.zmq_socket_reply()

  6. import console
  7. if( ! responder.bind(  "tcp://*:5559") ){
  8.     console.log( zeromq.lasterr() );  
  9.     return;
  10. }

  11. while (1) {
  12.     request = zeromq.message();
  13.    
  14.     ..console.log("服务端已启动")
  15.     if( ! responder.recvMsg(request) ){
  16.         ..console.log( zeromq.lasterr() )
  17.     }
  18.    
  19.     console.log ("服务端收到消息",request.getString() );
  20.     request.close();

  21.     //在这里可以添加其他代码
  22.     sleep (1);
  23.     console.log("正在响应")

  24.     // 发送消息
  25.     reply = zeromq.message("客户端你好");
  26.     responder.sendMsg(reply)
  27.     reply.close();

  28.     //上面的代码也可以简化为一句,如下:
  29.     //responder.send("客户端你好")

  30.     console.log("响应完毕")
  31. }

  32. //上面的代码会一直循环不会中断,
  33. //如果使用break语句中断,则执行下面的代码释放资源
  34. responder.close();
  35. context.term();
复制代码

9

主题

443

回帖

2546

积分

版主

积分
2546
发表于 2013-3-29 16:52:39 | 显示全部楼层
他在等客户端连接呢......... while(1) 就是一直循环.
reply套接字就是一问一答的模式( 读一次写一次)。

9

主题

68

回帖

1001

积分

荣誉会员

积分
1001
 楼主| 发表于 2013-3-29 17:16:42 | 显示全部楼层
roger 发表于 2013-3-29 16:52
他在等客户端连接呢......... while(1) 就是一直循环.
reply套接字就是一问一答的模式( 读一次写一次)。

018行的“   ..console.log("服务端已启动")”,这句的后面并没有等待语句,他是如何做到停在这里等待的呢?

39

主题

163

回帖

1351

积分

四级会员

积分
1351
发表于 2013-3-29 17:28:27 | 显示全部楼层
sphawkcn 发表于 2013-3-29 17:16
018行的“   ..console.log("服务端已启动")”,这句的后面并没有等待语句,他是如何做到停在这里等待的呢?

response.recvMsg 就是等待消息

9

主题

68

回帖

1001

积分

荣誉会员

积分
1001
 楼主| 发表于 2013-3-29 18:10:58 | 显示全部楼层
wudijushi 发表于 2013-3-29 17:28
response.recvMsg 就是等待消息

终于懂了,一语惊醒梦中人,谢谢了

0

主题

1

回帖

48

积分

新手入门

积分
48
QQ
发表于 2014-7-20 18:12:35 | 显示全部楼层
求教:有没有办法用事件监听的办法获知是否有新的消息,还是只能用while循环不断的去试着获取?
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2025-6-14 16:17 , Processed in 0.059976 second(s), 23 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表