本代码节选自书本第1卷3.5-3.6节。书上虽然给出了代码,但是比较零碎,此外,也没有给出使用示例。
- /************************************************************************/
- /* 本程序使用get方法读取特定url的数据,并且将它们送到标准输出上显示 */
- /************************************************************************/
- #include <ace/INET_Addr.h>
- #include <ace/sock_connector.h>
- #include <ace/SOCK_Stream.h>
- int main(int argc,char**argv)
- {
- const char* pathname = argc>1 ? argv[1] : "index.html";
- const char* server_hostname = argc>2 ? argv[2] : "ace.ece.uci.edu";
- ACE_SOCK_Connector connector;
- ACE_SOCK_Stream peer;
- ACE_INET_Addr peer_addr;
- if (peer_addr.set(80,server_hostname)==-1)
- return 1;
- ACE_Time_Value timeout(10);
- if (connector.connect(peer, peer_addr, &timeout) == -1)
- {
- if (errno == ETIME)
- return 1;
- }
- char buf[BUFSIZ];
- iovec iov[3];
- iov[0].iov_base = "GET ";
- iov[0].iov_len = 4;
- iov[1].iov_base = (char*)pathname;
- iov[1].iov_len = strlen(pathname);
- iov[2].iov_base = " HTTP/1.0/r/n/r/n";
- iov[2].iov_len = 13;
- if (peer.sendv_n(iov,3) == -1)
- return 1;
- for (ssize_t n; (n=peer.recv(buf, sizeof(buf)))>0; )
- ACE::write_n(ACE_STDOUT, buf, n);
- return peer.close()== -1? 1 : 0;
- };
- /************************************************************************/
- /* 使用示例:
- ace_test http://www.nbu.edu.cn/allwebs/wwwdb/dangbantongbao/index.html www.nbu.edu.cn
- 这样就能将该页面的内容收下来!哈哈! */
- /************************************************************************/