CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  网络编程

代理服务器测试失败?

楼主flyingakain(夜猫儿)2005-01-18 17:26:44 在 VC/MFC / 网络编程 提问

用影音传送带测试通过的代理服务器,用这段程序却测试不通过,但又不是所有的都不行,请各位给看看~~~  
   
  BOOL   CheckProxy(CString   IP,int   Port)  
  {  
  WSADATA   ws;    
  SOCKET   s;    
  struct   sockaddr_in   addr;    
   
  int   iResult;    
  long   lResult;    
  char   strSubAddr[100],   strBuffer[1000];    
   
  CString   strtmp;  
   
  lResult   =   WSAStartup(0x0101,&ws);    
  s   =   socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);    
   
  addr.sin_family   =   AF_INET;    
  addr.sin_port   =   htons(Port);    
   
  addr.sin_addr.s_addr   =   inet_addr(IP);    
  CString   out;  
  out.Format("%s:%d   ",IP,Port);  
  cout   <<   (LPCTSTR)out;  
  DWORD   on=1,off=0;  
   
  int   TimeOut=8000;    
  if(::setsockopt(s,SOL_SOCKET,SO_SNDTIMEO,(char   *)&TimeOut,sizeof(TimeOut))==SOCKET_ERROR){  
  cout   <<   (LPCTSTR)"连接超时\n"   <<   endl;  
  return   FALSE;  
  }  
  TimeOut=8000;  
  if(::setsockopt(s,SOL_SOCKET,SO_RCVTIMEO,(char   *)&TimeOut,sizeof(TimeOut))==SOCKET_ERROR){  
  cout   <<   (LPCTSTR)"连接超时\n"   <<   endl;  
  return   FALSE;  
  }  
   
   
  int   ret=ioctlsocket(s,FIONBIO,(unsigned   long   *)&on);  
  if(ret==SOCKET_ERROR)    
  {  
  cout   <<   (LPCTSTR)"连接失败\n"   <<   endl;  
  return   FALSE;    
  }    
   
   
  iResult=connect(s,(struct   sockaddr   *)&addr,   sizeof(addr));    
  struct   timeval   timeout   ;  
  fd_set   w;  
   
  FD_ZERO(&w);  
  FD_SET(s,   &w);  
  timeout.tv_sec   =   3;   //连接超时3秒  
  timeout.tv_usec   =0;  
  switch   (select(0,   0,   &w,   0,   &timeout))    
  {      
  case   -1:      
  WSACleanup();    
  cout   <<   (LPCTSTR)"连接超时\n"   <<   endl;  
  return   FALSE;    
  case   0:      
  WSACleanup();    
  cout   <<   (LPCTSTR)"连接超时\n"   <<   endl;  
  return   FALSE;    
  default:      
    if   (FD_ISSET(s,&w))    
    {      
    //连接成功        
                                             
    }      
  }      
   
  unsigned   long   ul1=   0   ;  
  ret   =   ioctlsocket(s,   FIONBIO,   (unsigned   long*)&off);  
   
  if(ret==SOCKET_ERROR){  
  WSACleanup();    
  cout   <<   (LPCTSTR)"连接失败\n"   <<   endl;  
  return   FALSE;    
  }  
   
   
  strcpy(strSubAddr,   "GET   http://www.163.com/   ");  
   
  strcat(strSubAddr,"HTTP/1.0   HOST:www.163.com   \r\n   ");  
   
  strcat(strSubAddr,"User-Agent:   Mozilla/4.0");  
   
  strcat(strSubAddr,"   \r\n\r\n");  
   
  iResult=send(s,strSubAddr,strlen(strSubAddr),0);  
   
   
  strset(strBuffer,'   ');    
  int   d=sizeof(addr);  
  accept(s,(struct   sockaddr   *)&addr,   &d);    
  iResult   =   recv(s,strBuffer,sizeof(strBuffer),0);    
   
     
  int   result   =   0;  
  result   =       strstr(strBuffer,"HTTP/1.0   200   OK")-strBuffer   +   1;  
   
  if(SOCKET_ERROR   ==   iResult)    
  {    
        //   连接失败    
      WSACleanup();    
      cout   <<   (LPCTSTR)"连接失败\n"   <<   endl;  
      return   FALSE;    
  }  
  else   if(result==1)  
  {  
  cout   <<   (LPCTSTR)"连接正常\n"   <<   endl;  
  }  
  else  
  {    
        //   连接失败    
      WSACleanup();    
      cout   <<   (LPCTSTR)"连接失败\n"   <<   endl;  
      return   FALSE;    
  }  
   
  return   TRUE;  
  } 问题点数:40、回复次数:6Top

1 楼flyingakain(夜猫儿)回复于 2005-01-21 01:24:55 得分 0

upTop

2 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-01-21 13:06:49 得分 5

网络连接?Top

3 楼gdy119(夜风微凉)回复于 2005-01-21 14:32:30 得分 35

listen(listensocket,5);  
                                      memset(strBuffer,0,1000);  
    int   d=sizeof(addr);  
  //   为什么有accept()?   listen()调用了吗?  
  accept(s,(struct   sockaddr   *)&addr,   &d);    
  iResult   =   recv(s,strBuffer,sizeof(strBuffer),0);    
   
     
  int   result   =   0;  
  result   =       strstr(strBuffer,"HTTP/1.0   200   OK")-strBuffer   +   1;  
                                                          //   这里返回的是1吗?不一定哦!  
  if(SOCKET_ERROR   ==   iResult)    
  {    
        //   连接失败    
      WSACleanup();    
      cout   <<   (LPCTSTR)"连接失败\n"   <<   endl;  
      return   FALSE;    
  }  
  else   if(result==1)  
  {  
  cout   <<   (LPCTSTR)"连接正常\n"   <<   endl;  
  }  
  else  
  {    
        //   连接失败    
      WSACleanup();    
      cout   <<   (LPCTSTR)"连接失败\n"   <<   endl;  
      return   FALSE;    
  }  
   
  return   TRUE;  
  }  
  Top

4 楼flyingakain(夜猫儿)回复于 2005-01-21 14:59:55 得分 0

accept   忘了弄掉了,哈哈  
   
  不过测试不通过的现象是,返回http   400错误Top

5 楼flyingakain(夜猫儿)回复于 2005-01-21 15:00:03 得分 0

accept   忘了弄掉了,哈哈  
   
  不过测试不通过的现象是,返回http   400错误Top

6 楼flyingakain(夜猫儿)回复于 2005-01-25 15:30:28 得分 0

upTop

相关问题

  • 代理服务器
  • 代理服务器
  • 代理服务器
  • 代理服务器
  • 代理服务器
  • DNS 服务器失败,help!
  • qq代理上不了,输入代理服务器地址,测试代理服务器工作正常,可就是上不了!!为什么?
  • asp连接access问题:本地测试成功,传到服务器上运行失败
  • 有关代理服务器?
  • 求代理服务器!

关键词

  • 服务器
  • 测试
  • ws
  • socket
  • ip
  • 代理服务器
  • addr
  • inet
  • lresult
  • sin

得分解答快速导航

  • 帖主:flyingakain
  • oyljerry
  • gdy119

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo