首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

通过代理服务器connect到远程网站的有关问题

2012-10-29 
通过代理服务器connect到远程网站的问题下面这段代码我分别用好几种代理服务器软件进行测试,但是又一种很

通过代理服务器connect到远程网站的问题
下面这段代码我分别用好几种代理服务器软件进行测试,
但是又一种很常用的代理服务器软件 CCProxy 却没有办法 recv 到任何数据,
其它均可以recv 到 “200” ,请问我该如何处理?大家帮忙看看:
ProxyStatus ConnectByHttp(SOCKET socket, string ip, u_short port)  
{  
  char buf[512];  
  
  if (m_proxyUserName != "")  
  {  
  string str;  
  string strBase64;  
  str = m_proxyUserName + ":" + m_proxyUserPwd; //代理服务器用户名和密码
  strBase64 = CBase64::Encode((unsigned char*)str.c_str(), str.length()); 
  sprintf(buf, "CONNECT %s:%d HTTP/1.1\r\nHost: %s:%d\r\nAuthorization: Basic %s\r\n\r\nProxy-Authorization: Basic %s\r\n\r\n",  
  ip.c_str(), port, ip.c_str(), port, strBase64.c_str(), strBase64.c_str());
  }
  else  
  {  
  sprintf(buf, "CONNECT %s:%d HTTP/1.1\r\nUser-Agent: MyApp/0.1\r\n\r\n", ip.c_str(), port);  
  }  
  
  Send(socket, buf, strlen(buf));
  memset(buf,0,sizeof(buf));
  Receive(socket, buf, sizeof(buf)); //这个地方没有获取到任何东西,buf 为空

  if (strstr(buf, "200") != NULL)  
  {  
  return SUCCESS;  
  }  
  else  
  {  
  return CONNECT_SERVER_FAIL;  
  }  
  


int Receive(SOCKET socket, char* buf, int bufLen)  
{  
  return recv(socket, buf, bufLen, 0); //这个地方没有获取到任何东西,buf 为空
}  
  
bool Send(SOCKET socket, const char* buf, int len)  
{  
  long ilen = len;  
  int sendCnt = 0;  
  int ret;  
  
  while(sendCnt < ilen)  
  {  
  if((ret = send(socket, buf + sendCnt, ilen - sendCnt, 0)) == SOCKET_ERROR)  
  {  
  return false;  
  }  
  else  
  {  
  sendCnt += ret;  
  }  
  }  
  
  return true;  
}

[解决办法]
跟踪啊,抓包啊。看报文
你本地转给CCproxy的时候看send成功没,再看CCproxy转到目标server没,再server给CCproxy回了没,最后就是CCProxy给你本地回了没。
这样不就知道了。
代码我看貌似没问题。

热点排行