跪求判断网页能否连接

Liang4 2009-10-07 10:24:45
比如www.csdn.net
vc怎么实现这个网址是否能连接的上。。。
希望能给实现代码。。。不要说用什么api函数试下之类的答复。。谢谢了,真的急~

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

借问一下,谁有实现这个问题的原理?
...全文
69 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Liang4 2009-10-09
  • 打赏
  • 举报
回复
这个问题暂时解决了,谢谢各位。。。
结帖了
supconsupcon 2009-10-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tr0j4n 的回复:]
C/C++ code

CInternetSession session;
CInternetFile*file=NULL;try
{
file=(CHttpFile*)session.OpenURL("http://www.csdn.net");
}catch(CInternetException*e)
{¡­
[/Quote]

OpenURL是采用阻塞的方式进行通信,网络不好会一直阻塞线程

S_S_Ge 2009-10-08
  • 打赏
  • 举报
回复
up一下
pcboyxhy 2009-10-08
  • 打赏
  • 举报
回复
不填写HOST字段,可能会导致使用虚拟主机配置的web server解析失败
根据www.csdn.net只能解析出IP地址,而这个IP地址可能绑定了N个域名
IP+端口无法标识一个site,web server可能根据HOST字段判断是哪个域名
某些server在后台做了限制,只允许特定的user-agent访问
最好也能指定编码格式

所以,自己get之前,要先把该填写的http头填写好,尽可能做到跟浏览器填写的一致
可以用firefox+httpfox查看一下具体填写了哪些头
pcboyxhy 2009-10-08
  • 打赏
  • 举报
回复
浏览器里输入www.csdn.net,也就是连80端口,80端口不行的,浏览器也打不开

所以socket连80端口是可行的,注意填写HOST字段
野男孩 2009-10-07
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")

int main()
{
WSADATA data = {0};
WSAStartup(0x202, &data);

SOCKET sck = socket(AF_INET, SOCK_STREAM, 0);

sockaddr_in addr_local = {0};
sockaddr_in addr_remote= {0};

addr_local.sin_family = AF_INET;
addr_remote.sin_family = AF_INET;
addr_remote.sin_port = htons(80);

//www.csdn.net这个域名可能对应多个ip
hostent* pEnt = ::gethostbyname("www.csdn.net");
DWORD **ppIPList = NULL;
int nIPListLen = 0;
if (pEnt)
{
ppIPList = (DWORD**)pEnt->h_addr_list;

int i = 0;
while(ppIPList[i]) ++i;
nIPListLen = i;
}

int nBadCnt = 0;


SOCKET sck = socket(AF_INET, SOCK_STREAM, 0);

if (nIPListLen > 0)
{
//随机选一个ip
addr_remote.sin_addr.s_addr = *ppIPList[GetTickCount()%nIPListLen];
}
bind(sck, (const sockaddr*)&addr_local, sizeof(addr_local));
int nRet = connect(sck, (const sockaddr*)&addr_remote, sizeof(addr_remote));
if (nRet > 0)
{
printf("连接成功\n");
}
else
{
printf("连接失败\n");
}
closesocket(sck);

WSACleanup();
return 0;
}

MoXiaoRab 2009-10-07
  • 打赏
  • 举报
回复


CInternetSession session;
CInternetFile *file=NULL;

try
{
file=(CHttpFile *)session.OpenURL("http://www.csdn.net");
}
catch(CInternetException *e)
{
file=NULL;
e->Delete();
AfxMessageBox("Open URL Error!");
return;
}
DWORD dwRet
((CHttpFile *)file)->QueryInfoStatusCode(dwRet);
if(dwRet==200)
AfxMessageBox("可以连接");

18,356

社区成员

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

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