社区
通信技术
帖子详情
WinSocket中recv函数的问题
nibani
2003-01-06 09:40:02
我用WinSocket API写了一个从www服务器中获得网页内容的程序。
但在使用recv函数时遇到了如下问题:
当获取某些较小的(几百个字节到几千个字节)GIF/JPG图像文件时,
recv函数总是只能获得很少的一部分数据,
然后就阻塞(我用的是阻塞模式)。
过了一会儿recv返回0值,说获取完了。
但事实上还有大部分数据没有取得。
对html,swf等文件却没有这样的情况。
为什么呢?
有写过代理服务器程序的吗?有没有遇到这样的问题?
...全文
162
6
打赏
收藏
WinSocket中recv函数的问题
我用WinSocket API写了一个从www服务器中获得网页内容的程序。 但在使用recv函数时遇到了如下问题: 当获取某些较小的(几百个字节到几千个字节)GIF/JPG图像文件时, recv函数总是只能获得很少的一部分数据, 然后就阻塞(我用的是阻塞模式)。 过了一会儿recv返回0值,说获取完了。 但事实上还有大部分数据没有取得。 对html,swf等文件却没有这样的情况。 为什么呢? 有写过代理服务器程序的吗?有没有遇到这样的问题?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
d
socket
脚本运行报错Error Code:9017
本文介绍了一种解决
Win
socket
协议脚本
中
出现的超时错误的方法,通过在lrs_send
函数
后添加lrs_set_
recv
_timeout
函数
并设置合理的超时时间,可以有效避免Vuser因错误而停止的
问题
。
delphi
win
socket
recv
读取的长度_STEP7关于PLC所带PC的用法读取控制块
本文介绍了如何使用Delphi的
Win
Socket
组件配合STEP7 PLC进行通讯,重点讲解了PNIO_
RECV
FC12和PNIO_SEND FC11这两个功能块的工作原理,包括在PROFINET IO控制器和设备模式下的数据接收与发送,以及相关状态代码的解释。
win
socket
recv
数据读取完成_第五十二章、send和
recv
函数
本文介绍了套接字编程
中
recv
和send
函数
的基本概念及使用方法,详细解释了这些
函数
如何处理数据传输,包括参数说明、标志位的作用、带外数据的应用以及
函数
的成功与失败返回值。
网络编程(基于
win
socket
)-- 常用
函数
介绍(一)
本文详细介绍了网络编程
中
win
socket
的常用
函数
,包括地址结构、addrinfo、inet_addr和inet_ntoa、字节转换
函数
以及WSAStartup、
socket
、bind、listen、connect、accept、send、
recv
、shutdown和close
socket
等
函数
的使用和作用。
【
Win
Socket
】
Win
Socket
函数
总结 及 常用
函数
精析
本文详细介绍了套接字的基础概念及核心
函数
,包括
socket
(), bind(), listen(), connect(), accept(), send(),
recv
()等,并深入解析了各
函数
的作用、参数含义及使用场景。
通信技术
4,394
社区成员
28,906
社区内容
发帖
与我相关
我的任务
通信技术
通信技术相关讨论
复制链接
扫一扫
分享
社区描述
通信技术相关讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章