搜索
查看: 4750|回复: 5

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

  [复制链接]

9

主题

79

帖子

1001

积分

荣誉会员

Rank: 8Rank: 8

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

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

  3. var context = zeromq.context(1)

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

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

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

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

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

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

  30.     io.print("响应完毕")
  31. }

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

使用道具 举报

9

主题

462

帖子

2551

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2551
发表于 2013-3-29 16:52:39 | 显示全部楼层

他在等客户端连接呢......... while(1) 就是一直循环. reply套接字就是一问一答的模式( 读一次写一次)。

他在等客户端连接呢......... while(1) 就是一直循环.
reply套接字就是一问一答的模式( 读一次写一次)。
回复

使用道具 举报

9

主题

79

帖子

1001

积分

荣誉会员

Rank: 8Rank: 8

积分
1001
 楼主| 发表于 2013-3-29 17:16:42 | 显示全部楼层

[quote][size=2][color=#999999]roger 发表于 2013-3-29 16:52[/color] [url=forum.php?m

roger 发表于 2013-3-29 16:52
他在等客户端连接呢......... while(1) 就是一直循环.
reply套接字就是一问一答的模式( 读一次写一次)。

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

使用道具 举报

39

主题

205

帖子

1351

积分

四级会员

Rank: 6Rank: 6

积分
1351
发表于 2013-3-29 17:28:27 | 显示全部楼层

[quote][size=2][color=#999999]sphawkcn 发表于 2013-3-29 17:16[/color] [url=forum.ph

sphawkcn 发表于 2013-3-29 17:16
018行的“   ..io.print("服务端已启动")”,这句的后面并没有等待语句,他是如何做到停在这里等待的呢?

response.recvMsg 就是等待消息
回复

使用道具 举报

9

主题

79

帖子

1001

积分

荣誉会员

Rank: 8Rank: 8

积分
1001
 楼主| 发表于 2013-3-29 18:10:58 | 显示全部楼层

[quote][size=2][color=#999999]wudijushi 发表于 2013-3-29 17:28[/color] [url=forum.p

wudijushi 发表于 2013-3-29 17:28
response.recvMsg 就是等待消息

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

使用道具 举报

0

主题

1

帖子

48

积分

新手入门

Rank: 1

积分
48
QQ
发表于 2014-7-20 18:12:35 | 显示全部楼层

求教:有没有办法用事件监听的办法获知是否有新的消息,还是只能用while循环不断的去试着获取?

求教:有没有办法用事件监听的办法获知是否有新的消息,还是只能用while循环不断的去试着获取?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2018-10-24 07:32 , Processed in 0.062500 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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