社区
网络编程
帖子详情
RECV接收问题!!!!!!!!!
AaronChan
2003-09-05 04:54:47
从服务器取数据,这个数据动态的,有可能很大,怎样才可以把这个数据全部接收完??接收缓冲区定义得很大感觉不是很好!
Recv(………………………………);
...全文
63
8
打赏
收藏
RECV接收问题!!!!!!!!!
从服务器取数据,这个数据动态的,有可能很大,怎样才可以把这个数据全部接收完??接收缓冲区定义得很大感觉不是很好! Recv(………………………………);
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiaohyy
2003-09-07
打赏
举报
回复
《windows网络编程》第2版 第5章,讲述的很详细。。建议去看看
AaronChan
2003-09-07
打赏
举报
回复
我是先向服务器提交申请,然后服务器返回数据,所以数据包的格式是不能由我控制的。
SELECT模型谁给个例子看看,我测试的时候SELECT()返回总是0,有问题!!!
用循环好吗?我接收完数据就要把SOCKET关闭的。
wkgenius
2003-09-06
打赏
举报
回复
服务器端先把数据的大小发送给客户端,比如说这个大小为dwSize,那么,接下来接收数据。
char buf[2048];
int n = 0;
while(dwSize>0)
{
n=recv(s,buf,2048);
dwSize -= n;
将收到的数据写到一个文件里;
}
wkgenius
2003-09-06
打赏
举报
回复
服务器端先把数据的大小发送给客户端,比如说这个大小为dwSize,那么,接下来接收数据。
char buf[2048];
int n = 0;
while(dwSize>0)
{
n=recv(s,buf,2048);
dwSize -= n;
将收到的数据写到一个文件里;
}
ProgrameMan
2003-09-06
打赏
举报
回复
char buf[1024];
int n = 0;
while(TRUE)
{
n = recv(s,buf,sizeof(buf))
if (n<=0 ) break;
// 下面保存接收到的数据
}
redby
2003-09-06
打赏
举报
回复
建议你:
一般发送数据包括两个部分:包头和包体,
1包头:用来描述包体的长度(用时包括标识包体的类型)等信息
2包体:在收到报头后,可根据包头所描述的包体长度去接收定长的包体。(如果一次接收不满,可循环接收,直到接收到定长的数据包)
3缓冲区:你可以动态的分配缓冲区,也可以耕具你目前的数据流量来定义最小的满足应用的
缓冲区大小,大点也无所谓,一般十万个字节没问题。
IThurricane
2003-09-06
打赏
举报
回复
int send = 0;
while(send<sizeof(MMM))
{
int nCharSend=send(m_hSocket,(char*)(&SendBag+send),sizeof(MMM)-send,0);
send+=nCharSend;
}
xiaohyy
2003-09-05
打赏
举报
回复
缓冲区通常不要超过4k,以免系统换页,定义为1024就比较合适。。
循环读,直到没有数据为止,
通常在recv时,采用select模型,设置一个超时时间。。
TCP通信,
recv
接收
数据需要注意的地方?
关于TCP通信中,
recv
函数
接收
数据大小的
问题
,之前一直觉得,只要是客户端与服务器一发一收的模式,那么
recv
接收
的数据大小一定是函数中指定的数据大小。这次写了客户端与服务器通信的程序,在这上面栽了一个大跟斗...
recv
函数
接收
数据
问题
(诡异)--调试正确,全速出错
今天,测试代码时,发现使用
recv
函数
接收
数据时,当全速运行时,出现
接收
数据不全
问题
,当调试运行的时候,一切正常。调整
接收
数据缓冲大小,发现太小时,重复
接收
过程会出现数据交叉
问题
。 一切都显的那么诡异,...
socket传输文件过程中
recv
函数
接收
数据包不完全
socket传输文件过程中
recv
函数
接收
数据包不完全
recv
函数接受包不完全,即当
recv
()返回的大小如果等于请求的大小,那么很有可能是缓冲区还有数据未读完,也意味着该次事件还没有处理完,所以还需要再次读取。 比如...
socket编程中
recv
函数
接收
到的字符串乱码解决方法
recv
_len =
recv
(s_server,
recv
_buf, 40, 0); if (
recv
_len < 0) { cout << "接受失败!" << endl; break; } else { cout << "服务端信息:" <<
recv
_buf << endl; } ...
Windows下SOCKET的
recv
()函数
接收
的buf无法随时清除
问题
在这个过程中需要随时清空已经
接收
过的服务器数据,但是使用memset只能在
recv
接收
完毕清空,而无法随时清空, 尝试了很多修改代码逻辑的方法来解决
问题
,但都不行,后来才发现必须要能够随时清空接受到的buf才能...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章