社区
通信技术
帖子详情
WinSocket中recv函数的问题
nibani
2003-01-06 09:40:02
我用WinSocket API写了一个从www服务器中获得网页内容的程序。
但在使用recv函数时遇到了如下问题:
当获取某些较小的(几百个字节到几千个字节)GIF/JPG图像文件时,
recv函数总是只能获得很少的一部分数据,
然后就阻塞(我用的是阻塞模式)。
过了一会儿recv返回0值,说获取完了。
但事实上还有大部分数据没有取得。
对html,swf等文件却没有这样的情况。
为什么呢?
有写过代理服务器程序的吗?有没有遇到这样的问题?
...全文
119
6
打赏
收藏
WinSocket中recv函数的问题
我用WinSocket API写了一个从www服务器中获得网页内容的程序。 但在使用recv函数时遇到了如下问题: 当获取某些较小的(几百个字节到几千个字节)GIF/JPG图像文件时, recv函数总是只能获得很少的一部分数据, 然后就阻塞(我用的是阻塞模式)。 过了一会儿recv返回0值,说获取完了。 但事实上还有大部分数据没有取得。 对html,swf等文件却没有这样的情况。 为什么呢? 有写过代理服务器程序的吗?有没有遇到这样的问题?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
SuperFC
2003-02-10
打赏
举报
回复
对tcp/ip来说有一个窗口大小问题,接收端会对窗口大小进行调节;
所以,我想你的程序可能应该成下面这个模式:
char rec[4096];
int ret,nLeft,nIndex;
nLeft = 4096;
nIndex = 0;
while( nLeft > 0 )
{
ret = recv(s, &rec[nIndex], nLeft, 0)
if( ret == SOCKET_ERROR)
{
printf("errror\n");
exit(1);
}
nIndex = nIndex + nLeft;
nLeft = nLeft - ret;
}//while
gold_stone
2003-01-08
打赏
举报
回复
你没有必要用循环等待再break;read()函数需要有时间参数,因为阻塞模式需要等待再次发送,如果超时将返回空值。
nibani
2003-01-07
打赏
举报
回复
while(1)
{
retval = recv(sPTR,Buffer,sizeof (Buffer),0 );
if (retval == SOCKET_ERROR )
{
closesocket(sPTR);
break;
}
Len=retval;
if (Len == 0 && IsCTRClose == true)
{
closesocket(sPTR);
break;
}
if(Len!=0)
{
retval = send(sCTP,Buffer,Len,0);
if(retval == SOCKET_ERROR)
{
closesocket(sPTR);
break;
}
}
}
这是有关的代码。该怎么改?
Nepton
2003-01-07
打赏
举报
回复
把程序贴出来!
肯定是你的程序错了
nibani
2003-01-07
打赏
举报
回复
GIF/JPG文件中有回车换行符吗?
如果有,应该怎么避免?
xysome
2003-01-06
打赏
举报
回复
如果碰到回车换行符,就停止
Win
Socket
常用
函数
及结构
常用结构定义及
函数
WSADATA sockaddr_in fd_set timeval WSAStartup WSACleanup htons htonl ntohs ntohl inet_addr inet_ntoa
socket
close
socket
bind listen connect accept select send
recv
send 、sendto 、
recv
、
recv
from
函数
在不同模式下的不同表现
win
socket
函数
大全-
中
文
win
socket
函数
大全-
中
文
win
socket
函数
大全-
中
文
win
socket
编程c++实现
基于对话框的
win
dows应用程序的编写过程。
Win
dows
Socket
编程应用VisualC++
中
MFCC
Socket
类,实现网络数据传输。制作实用的局域网数据传输程序。
Win
Socket
编程C++源代码
Win
Socket
编程C++源代码 客户端和服务器的通信 基于此可以开发类似QQ的聊天软件
win
socket
入门教程
资源包括两个文档 1
Win
socket
入门教程一:多线程阻塞式服务器和阻塞式客户端程序 TCP doc 2
Win
socket
入门教程二:非阻塞式服务器和客户端程序 TCP doc
通信技术
4,387
社区成员
28,918
社区内容
发帖
与我相关
我的任务
通信技术
通信技术相关讨论
复制链接
扫一扫
分享
社区描述
通信技术相关讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章