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

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

本文简介:

void szcopy(char* dest,const char* src,int nMaxBytes)
{
         int i_cntr=0;
         while ((src[i_cntr]!='\0') || (i_cntr<nMaxBytes))
                    dest[i_cntr]=src[i_cntr++];
         dest[i_cntr]='\0';
}

BOOL SocketSend(SOCKET sckDest,const char* szHttp)
{

    char szSendHeader[MAXHEADERLENGTH];
    int iLen=strlen(szHttp);
    szcopy(szSendHeader,szHttp,iLen);
    if(send (sckDest  ,(const char FAR *)szSendHeader ,iLen ,0)==SOCKET_ERROR)
    {
               closesocket(sckDest);
               AfxMessageBox("Error when send");
                return FALSE;
    }

    return TRUE;
}

BOOL SocketSend(SOCKET sckDest,CString szHttp)
{

    int iLen=szHttp.GetLength();
    if(send (sckDest,szHttp,iLen,0)==SOCKET_ERROR)
    {
               closesocket(sckDest);
               AfxMessageBox("Error when send");
                return FALSE;
    }

    return TRUE;
}

(4)用于连接的函数

这里是做了一些连接用的操作,分了两种情况

1)。如果没有使用代理,则直接连到你指定的计算机

2)。如果使用了代理,则直接连到代理

BOOL CDLAngelDlg::ConnectHttp()
{

 message="正在建立连接\n";


  UpdateData(TRUE);
 if(m_combo=="HTTP")    // m_combo 一个下拉条
 {
           HTTPSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
            SocketAddr.sin_addr.s_addr = inet_addr (m_ProxyAddr);
            SocketAddr.sin_family=AF_INET;
            SocketAddr.sin_port=htons(atoi(m_Port));

            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 *)&SocketAddr, sizeof(SocketAddr))==SOCKET_ERROR)
            {
                       message="\n代理连接失败\n";
                       m_message.CleanText();
                       m_message.AddText(message);
                       return 0;
            }

//  发送CONNCET请求令到代理服务器,用于和代理建立连接

//代理服务器的地址和端口放在m_ProxyAddr,m_Port 里面

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

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

go top