透过代理看世界(http代理篇)[4]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

 /// 准备连接信息
 BindSocket.sin_addr.s_addr = inet_addr (strHost);
 BindSocket.sin_family=AF_INET;
 BindSocket.sin_port=htons(HttpPort);


 struct fd_set fdSet;
 struct timeval tmvTimeout={0L,0L};
 
 FD_ZERO(&fdSet);
 FD_SET(HTTPSocket, &fdSet);
 
 if (select(0,&fdSet,NULL,NULL,&tmvTimeout)==SOCKET_ERROR)
 {
            closesocket(HTTPSocket);
            AfxMessageBox("Error when select.");
            return 0;
 }

// 连接


 if (connect(HTTPSocket, (const struct sockaddr *)&BindSocket, sizeof(BindSocket))==SOCKET_ERROR)
 {
            AfxMessageBox("第一次连接失败,准备第二次连接");
            if (connect(HTTPSocket
            ,(const struct sockaddr *)&BindSocket
            ,sizeof(BindSocket))==SOCKET_ERROR)
            {
                       closesocket(HTTPSocket);
                       AfxMessageBox("连接失败");
                       return 0;
            }

 }

 message="连接完成\n";
 
 return 1;
}

(5)。发送http请求,为下载数据进行准备
int CDLAngelDlg::SendHttpHeader()
{
//进行下载

 CString temp;
 BOOL bReturn;
 char tmpBuffer[MAXBLOCKSIZE];


///第1行:方法,请求的路径,版本
 temp="GET "+DownLoadAddress+hostFile+" HTTP/1.0\r\n";
 bReturn=SocketSend(HTTPSocket,temp);
 if(!bReturn)
 {
  message="发送请求失败";
  return 0;
 }


///第2行:主机
 temp="Host "+strHost+"\r\n";
 bReturn=SocketSend(HTTPSocket,temp);
 if(!bReturn)
 {
            message="发送请求失败";
            return 0;
 }


///第3行:接收的数据类型
 bReturn=SocketSend(HTTPSocket,"Accept: */*\r\n");
   if(!bReturn)
 {
            message="发送请求失败";
            return 0;
 }


///第4行:
 temp=DownLoadAddress;
 temp.Insert(0,"Referer ");
 temp+="\r\n";
 bReturn=SocketSend(HTTPSocket,temp);
 if(!bReturn)
 {
            message="发送请求失败";
            return 0;
 }


///第5行:浏览器类型

 bReturn=SocketSend(HTTPSocket,"User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt; DTS Agent;)\r\n");
 if(!bReturn)
 {
            message="发送请求失败";
            return 0;
 }

///第6行:连接设置,保持
// SocketSend(HTTPSocket,"Connection:Keep-Alive\r\n");

///第7行:Cookie.

 bReturn=SocketSend(HTTPSocket,"Cache-Control: no-cache\r\n");
 if(!bReturn)
 {
            message="发送请求失败";
            return 0;
 }

 
 bReturn=SocketSend(HTTPSocket,"Proxy-Connection: Keep-Alive\r\n");
 if(!bReturn)
 {
            message="发送请求失败";
            return 0;
 }

/// 续传

本文关键:透过代理看世界(http代理篇)
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top