提问一个尖锐的问题:关于网页能否打开

Liang4 2009-10-01 11:16:43
比如www.csdn.net
vc怎么实现这个网址是否能打开。。

sock只能判断一个端口,
shellexecute只能判断你是否运行了"IEXPLORE.EXE" or "cmd.exe" ,并不能判断这个网址或者地址 连接的结果
很多check 函数也只是判断硬件网络的连接

借问一下,谁有实现这个问题的原理?
...全文
108 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ok1234567 2009-10-02
  • 打赏
  • 举报
回复
1、connect 80端口,确定服务是否可用
2、请求相关资源,读取一行(状态行)判断返回状态码,如果为:
2XX,则资源存在;
3XX,资源转移,需要进一步检查(Location);
4XX,资源不存在;
5XX,服务器不支持(出错)
Liang4 2009-10-01
  • 打赏
  • 举报
回复
sendto也是SOCKET的成员函数。connect的时候就已经要端口这个属性了。假如没有设置也是默认是80端口吧?

还是只是测试了一个默认的80端口而已。。

这里边有些模糊。
华亭真人 2009-10-01
  • 打赏
  • 举报
回复
直接sendto,然后用GetlastError查看
jourbin 2009-10-01
  • 打赏
  • 举报
回复
用socket就行:
1,gethostbyname
2,connect
3,HTTP GET
4,parse http status code,if error( 200 means ok )


PS:
端口默认是80,如果不是80的话,URL上应该指定端口的(例:www.csdn.net:8080)
哈利路亚1874 2009-10-01
  • 打赏
  • 举报
回复
只能帮顶了
华亭真人 2009-10-01
  • 打赏
  • 举报
回复
哦会错意了
华亭真人 2009-10-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 liang4 的回复:]
sendto也是SOCKET的成员函数。connect的时候就已经要端口这个属性了。假如没有设置也是默认是80端口吧?

还是只是测试了一个默认的80端口而已。。

这里边有些模糊。
[/Quote]

UDP 不用connect,我测试过,联网时随便发个包出去,Error为0,拔掉网线为10065
whg01 2009-10-01
  • 打赏
  • 举报
回复
在启动ie的同时抓包,解析和相应网站通信内容。
pcboyxhy 2009-10-01
  • 打赏
  • 举报
回复
gethostbyname只是做DNS解析,并不能判断主机是否在线

此外,如果操作系统>=windows 2000
建议用getaddrinfo代替gethostbyname,byname的那个函数被微软deprecated了
fangle6688 2009-10-01
  • 打赏
  • 举报
回复
人家问的是“网页”能否打开。。。

2种方法:

1、用WinInet API或WebBroswer控件直接打开URL,根据返回值判断
2、用SOCKET往80端口发GET包,看能否收到“HTTP 200 OK”
pcboyxhy 2009-10-01
  • 打赏
  • 举报
回复
如果80端口连接不上
浏览器中不指定端口也是打不开的

如果要判断主机是否在线
只能靠socket扫一遍所有端口了
这个结果也并不能保证准确
因为跟防火墙规则有关
主机也可以检测到你的扫描 block掉你
jameshooo 2009-10-01
  • 打赏
  • 举报
回复
BOOL bEnable = InternetCheckConnection(_T("http://www.csdn.net"), FLAG_ICC_FORCE_CONNECTION, 0);
MoXiaoRab 2009-10-01
  • 打赏
  • 举报
回复
GetHostByName(域名),能得到就是能打开,得不到IP就肯定打不开
dirdirdir3 2009-10-01
  • 打赏
  • 举报
回复
用CInternetSession里面的openurl返回为空表示打开失败...........
wy24789 2009-10-01
  • 打赏
  • 举报
回复
用socket发送GET下载啊!有个URLDownload...的API可以直接下,判断返回或者下载的数据就可以了

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧