取得html代码的时候的问题,recv后来返回总是零

asphp 2005-09-26 09:53:00
char buf[10001];
int iret;
string sresp;
while((iret=recv(buf,1000,0))!=-1)
{
sresp+=buf;
}


但函数会死了,html代码只得到一半,后来查查,iret总是等于零,怀疑是服务端强制断开所致,如何解决这个问题?
...全文
167 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
msvcp60 2006-02-07
我的办法是 在线程李接收数据,这样你的代码就可以正常工作了
回复
msvcp60 2006-02-07
跟我遇到的问题一样,我也是通过SOCKET发送GET请求,HTTP返回的代码接收不完整。
回复
asphp 2005-10-29
???为什么老没有人回我呢?高手都到哪去了?
回复
lianglp 2005-10-29
当服务器强制关闭连接的socket后,客户端调用recv()将返回0。
回复
asphp 2005-10-23
我不用封装的就不行吗?郁闷中!
回复
laofang 2005-09-27
取HTML代码用CInternetFile多方便呀:
---
CInternetSession session;
CInternetFile* file=NULL;
CString strUrl = "http://news.sina.com/";

try
{
file=(CInternetFile*)session.OpenURL(strUrl);
}
catch(CInternetException*pEx)
{
file=NULL;
pEx->Delete();
//return;
}

if(file)
{
// 开始分析呀……
file->Seek(1831L, CFile::begin);
file->ReadString(strLine);


//也可以在此用个循环全部取下来……
}

if(file != NULL)
file->Close();
回复
asphp 2005-09-27
CSDN上就没有人会打这个问吗?
回复
asphp 2005-09-26
如上的代码还是没有用,为什么?
回复
asphp 2005-09-26
附:
刚才代码省了点,
char buf[10001];
int iret;
string sresp="";
while((iret=recv(buf,1000,0))!=-1)
{
buf[iret-1]='\0';
sresp+=buf;
}
回复
发帖
网络编程
创建于2007-09-28

1.8w+

社区成员

VC/MFC 网络编程
申请成为版主
帖子事件
创建了帖子
2005-09-26 09:53
社区公告
暂无公告