HTTP 代理问题,高手请进!
线程1:
long serverip= inet_addr("218.193.120.45");
memcpy(m_serverip,&serverip,4);
m_serverPort=80;
m_proxyip=inet_addr("222.43.34.94");
m_proxyprot=80;
if(m_hsocket!= INVALID_SOCKET)
{
closesocket(m_hsocket);
m_hsocket=INVALID_SOCKET;
}
m_hsocket=socket(AF_INET,SOCK_STREAM,0);
if(m_hsocket==NULL)
AfxMessageBox("创建TCP SOCKET失败!");
//如果使用代理的话
if(m_proxyip!=0)
{
sockaddr_in addr;
addr.sin_family=AF_INET;
memcpy(&addr.sin_addr.S_un.S_addr,&m_proxyip,4);
addr.sin_port=htons(m_proxyprot);
int ret=connect(m_hsocket,(LPSOCKADDR)&addr,sizeof(addr));
if(ret==SOCKET_ERROR)
AfxMessageBox("连接TCP SOCKET失败!");
BYTE conbuf[600];
ZeroMemory(conbuf,sizeof(conbuf));
in_addr inaddr;
memcpy(&inaddr.S_un.S_addr,&m_serverip,4);
CString strserverip=inet_ntoa(inaddr);
sprintf((char*)conbuf, "%s %s:%d %s%s%s%s","CONNECT",strserverip,m_serverPort,"HTTP/1.1\r\n","Host:
",strserverip,"\r\nAccept: */*\r\nContent-Type: text/html\r\nProxy-Connection: Keep-Alive\r\nContent-length: 72\r\n\r\n");
send(m_hsocket,(char *)conbuf,(int)strlen((char*)conbuf),0);
}
//以下进行数据处理
//线程1数据处理完后,线程2
long serverip= inet_addr("218.193.120.88");
memcpy(m_serverip,&serverip,4);
m_serverPort=80;
if(m_hsocket!= INVALID_SOCKET)
{
closesocket(m_hsocket);
m_hsocket=INVALID_SOCKET;
}
m_hsocket=socket(AF_INET,SOCK_STREAM,0);
if(m_hsocket==NULL)
AfxMessageBox("创建TCP SOCKET失败!");
//如果使用代理的话
if(m_proxyip!=0)
{
sockaddr_in addr;
addr.sin_family=AF_INET;
memcpy(&addr.sin_addr.S_un.S_addr,&m_proxyip,4);
addr.sin_port=htons(m_proxyprot);
int ret=connect(m_hsocket,(LPSOCKADDR)&addr,sizeof(addr));
if(ret==SOCKET_ERROR)
AfxMessageBox("连接TCP SOCKET失败!");
BYTE conbuf[600];
ZeroMemory(conbuf,sizeof(conbuf));
in_addr inaddr;
memcpy(&inaddr.S_un.S_addr,&m_serverip,4);
CString strserverip=inet_ntoa(inaddr);
sprintf((char*)conbuf, "%s %s:%d %s%s%s%s","CONNECT",strserverip,m_serverPort,"HTTP/1.1\r\n","Host:
",strserverip,"\r\nAccept: */*\r\nContent-Type: text/html\r\nProxy-Connection: Keep-Alive\r\nContent-length: 72\r\n\r\n");
send(m_hsocket,(char *)conbuf,(int)strlen((char*)conbuf),0);
}
问题:
线程1,完全正常,等到线程2开始工作程序就出错,说代理访问控制列表不允许操作??,哪果线程一打开CONNECT 后就执行线程2程序就正常,我在想,是不是到PROXY CONNECTION 没有正常关闭的原因,那应该怎么样关闭呢??