浅谈http代理服务器的穿透

思路就是先用套接字连接代理服务器,然后给代理服务器发送http请求,访问远程服务器
添加图片注释,不超过 140 字(可选)
代码如下(只是连接):

//初使化服务器地址
local.sin_family=AF_INET;
local.sin_port=htons(8080);
local.sin_addr.S_un.S_addr=inet_addr( "192.168.10.8"); //代理
m_socket=socket(AF_INET,SOCK_STREAM,0);
int ret;
//联接代理服务器
ret=connect(m_socket,(LPSOCKADDR)&local,sizeof(local));
//有错的话
if(ret!=0)
{
AfxMessageBox( "联接错误 ");
closesocket(m_socket);
return ;// -1;
}
AfxMessageBox( "连接代理服务器成功 ");
//用来和代理服务器交换信息的消息区
char buff[800];
//sprintf( buff, "%s%s:%d%s ", "CONNECT ", "211.150.66.120 ",443, " HTTP/1.1\r\nUser-Agent: MyApp/0.1\r\n\r\n ");
sprintf(buff,"CONNECT 211.150.66.120:5222 HTTP/1.0\r\nHost: 211.150.66.120\r\nContent-Length: 0\r\nProxy-Connection: Keep-Alive\r\nPragma: no-cache\r\n\r\n");
send(m_socket,buff,strlen(buff),0); //发送请求
memset(buff,0,800);
recv(m_socket,buff,800,0); //返回代理的response消息
if(strstr(buff, "HTTP/1.0 200 ")==NULL)
{
AfxMessageBox( "通过代理连接外网不成功! ");
closesocket(m_socket);
return ;// 0;
}
AfxMessageBox( "连接外网服务器成功! ");