找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3812|回复: 1

看书的时候的一些问题

[复制链接]
发表于 2007-12-11 22:09:40 | 显示全部楼层 |阅读模式
我是一个ACE的初学者,正在<ACE 技术论文集>.在看书的过程中出现了一些问题。请大侠帮忙看看。
书上有个例子是这样的:
  1. static const nt PORT_NUM = 10000;
  2. static const int TIMEOUT =5;
  3. // SOCK_SAP Client.
  4. template <class CONNECTOR>
  5. void send_data (CONNECTOR::PEER_ADDR peer_addr)
  6. {
  7. // Data transfer object.
  8. CONNECTOR::PEER_STREAM peer_stream;
  9. // Establish connection without blocking.
  10. CONNECTOR connector (peer_stream, peer_addr, ACE_NONBLOCK);
  11. if (peer_stream.get_handle () == -1)
  12. {
  13. // If non-blocking connection is in progress,
  14. // wait up to TIMEOUT seconds to complete.
  15. Time_Value timeout (TIMEOUT);
  16. if (errno != EWOULDBLOCK ||  
  17. connector.complete (peer_stream, peer_addr, &timeout) == -1)
  18. perror ("connector"), exit (1);
  19. }
  20. char buf[BUFSIZ];
  21. for (int r_bytes; (r_bytes = read (0, buf, sizeof buf)) > 0;)
  22.     peer_stream.send_n (buf, r_bytes);
  23. // Explicitly close the connection.
  24. peer_stream.close ();
  25. }
  26. int main (intargc, char *argv[])
  27. {
  28. char *host = argc > 1 ? argv[1] : "ics.uci.edu";
  29. u_short port_num = htons (argc > 2 ? atoi (argv[2]) : PORT_NUM);
  30. // Address ofthe server.
  31. ACE_INET_Addr s_addr (port_num, host)
  32. // Use SOCK SAP wrappers onclient’s side.
  33. send_data <ACE_SOCK_Connector> (s_addr);
  34. return 0;
  35. }
复制代码
代码的意思都是懂的,但是突然想编译看看结果,结果发现问题:

if (peer_stream.get_handle () == -1)   这里==-1报错,类型无法转换。
CONNECTOR connector (peer_stream, peer_addr, ACE_NONBLOCK); 这里也是说ACE_NONBLOCK不能换成ACE_Time_Value,我郁闷了。对这个不熟,改都不知怎么改。请大侠帮帮忙?
 楼主| 发表于 2007-12-11 22:10:39 | 显示全部楼层
应该是ACE的版本差异造成的,书上是旧版本的代码,新的已经改进了,你看看文档,改过来就可以了。我以前也遇见过类似情况,的确存在,不过很少很少。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-5-18 08:29 , Processed in 0.012794 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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