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

#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;
	else
		if(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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值