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

如何判断远程的主机是否存在?

楼主dreamchild(梦小孩)2005-06-04 00:31:46 在 .NET技术 / C# 提问

我现在用的是用  
  try    
  socket.connect  
  catch  
  的方法  
  但是这个方法到出错要17秒左右,没有时间等啊。  
  以前用C++有直接判断的方法。  
  C#内要如何做?  
   
   
  3、同步方式中减少断网时connect函数的阻塞时间    
   
    同步方式中的断网时connect的阻塞时间为20秒左右,可采用gethostbyaddr事先判断到服务主机的路径是否是通的,或者先ping一下对方主机的IP地址。    
   
    A、采用gethostbyaddr阻塞时间不管成功与否为4秒左右。    
   
    例子:    
   
  LONG   lPort=3024;    
   
  struct   sockaddr_in   ServerHostAddr;//服务主机地址    
   
  ServerHostAddr.sin_family=AF_INET;    
   
  ServerHostAddr.sin_port=::htons(u_short(lPort));    
   
  ServerHostAddr.sin_addr.s_addr=::inet_addr("192.168.1.3");    
   
  HOSTENT*   pResult=gethostbyaddr((const   char   *)   &    
   
  (ServerHostAddr.sin_addr.s_addr),4,AF_INET);    
   
  if(NULL==pResult)    
   
  {    
   
  int   nErrorCode=WSAGetLastError();    
   
  TRACE("gethostbyaddr   errorcode=%d",nErrorCode);    
   
  }    
   
  else    
   
  {    
   
  TRACE("gethostbyaddr   %s\n",pResult->h_name);;    
   
  }    
   
    B、采用PING方式时间约2秒左右    
   
    暂略  
  问题点数:0、回复次数:7Top

1 楼dreamchild(梦小孩)回复于 2005-06-04 16:27:06 得分 0

ddddTop

2 楼hedonister(冰戈)回复于 2005-06-04 17:47:25 得分 0

如果是http验证,就向代理发个request,看看有没有反应!      
  HttpWebRequest     objHttpRequest;      
  HttpWebResponse     objResponse;      
  WebProxy     objProxy;      
     
  objHttpRequest=(HttpWebRequest)WebRequest.Create(m_strUrl);      
  objHttpRequest.Timeout=3000;      
  objHttpRequest.AllowAutoRedirect=true;      
  objHttpRequest.ContentType="application/x-www-form-Urlencoded";      
     
  objProxy=new     WebProxy(ProxyName,PortID);      
  objProxy.BypassProxyOnLocal=true;      
  objProxy.Credentials=new     NetworkCredential(UserID,Pwd,Domain);      
     
  objHttpRequest.Proxy=objProxy;      
  try      
  {      
                objResponse=(HttpWebResponse)objHttpRequest.GetResponse();      
  }      
  catch(Exception     e)      
  {      
                throw     e;      
  }Top

3 楼hedonister(冰戈)回复于 2005-06-04 17:48:14 得分 0

不好意思好象发错了,你参考一下吧Top

4 楼YYKXQ(异域狂想曲)回复于 2005-06-04 20:30:11 得分 0

第一题:  
  你可以把连接的响应时间设置小一点就不用等那么久了Top

5 楼zhzuo(秋枫)回复于 2005-06-04 23:37:22 得分 0

调用telnet判断结果,  
   
  http://www.cnblogs.com/jiezhi/articles/87412.htmlTop

6 楼dreamchild(梦小孩)回复于 2005-06-05 00:15:05 得分 0

第一题:  
  你可以把连接的响应时间设置小一点就不用等那么久了  
   
  但是要如何设响应时间?  
  有SendTimeout及receivetimeout   没有connecttimeoutTop

7 楼dreamchild(梦小孩)回复于 2005-06-07 21:53:08 得分 0

dingTop

相关问题

  • 怎么判断远程主机是否连通?
  • 如何判断远程是否有指定的文件存在?
  • 如何判断远程文件是否存在?
  • asp如何判断远程web文件是否存在?
  • 怎样根据远程的主机IP地址判断他所在的国家、城市
  • 很难的问题:如何判断一个远程主机是否连上网了
  • 高手请进,怎么判断远程网络是否存在?高分想送。。。
  • 如何用JAVA编程在远程判断某网站的某页面是否存在?
  • 怎样判断一个网页是否能够正常访问?比如说页面不存在,或主机没开。
  • 怎样判断一个网页是否能够正常访问?比如说页面不存在,或主机没开。

关键词

  • 主机
  • serverhostaddr
  • objhttprequest
  • gethostbyaddr
  • objproxy
  • presult
  • 阻塞
  • 判断
  • sin
  • addr

得分解答快速导航

  • 帖主:dreamchild

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

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