ACE 第一个练习:Web Client,解决了400 Bad Request问题,但不知为什么要这么做

来源:互联网 发布:上海炫踪网络 编辑:程序博客网 时间:2024/06/05 10:58
#include "ace/INET_Addr.h"#include "ace/SOCK_Connector.h"#include "ace/SOCK_Stream.h"#include "ace/Log_Msg.h"int ACE_TMAIN (int argc, ACE_TCHAR *argv[]){const char *pathname=argc>1 ? argv[1]:"index.html";const char *servername=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,servername)==-1)return -1;elseif(connector.connect(peer,peer_addr)==-1)return -1;char buf[BUFSIZ] = {0};iovec iov[3];iov[0].iov_base= "GET ";iov[0].iov_len= strlen("GET ") + 1;// 比实际大小多一个字节,不然会有400 Bad Request问题,不知道为什么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(iov, 3) == -1)return -1;for(ssize_t n; (n = peer.recv(buf, sizeof buf)) > 0; )ACE::write_n(ACE_STDOUT ,buf ,n);system("pause");return peer.close() == -1 ? 1 : 0;}