recv一次最大可以收多少字符?

magicist 2003-06-12 11:48:18
recv(cli_sock, szBuf, sizeof(szBuf), 0);
我如何定义szBuf(假定字符串)的长度?

如果定义的szBuf长度超过了SOCKET一次传输的字符会发生什么?

如果szBuf的长度小于SOCKET一次传过来的字符会怎么样?
...全文
1871 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
风龙-3 2003-06-14
  • 打赏
  • 举报
回复
你可以使用setsockopt进行设置SO_RCVBUF的大小,但TCP具体编程中,该缓冲区没有什么大的含义,你可以定义一个小的缓冲区.TCP的缓冲区如果有数据,就会按你给的长度,拷贝数据到
你自定义的缓冲区,如果TCP中没有这么多数据,拷贝它现有的数据.如果TCP中没有数据,而且你用的是阻塞的SOCKET,应用将会在RECV函数时等待,直到有数据或者出错。
felics 2003-06-14
  • 打赏
  • 举报
回复
最大64KBYTE。
不过最好不要用这么大,大了的话如果丢包就要重发64K,建议用1。4K左右的包,这样兼容性也好一点
bb123456789 2003-06-14
  • 打赏
  • 举报
回复
默认的好象是0.5 到8K
XiaoYuBBS 2003-06-14
  • 打赏
  • 举报
回复
To:shilong
"64K也许就是65536",这个是指Byte还是Bit?
Thanks in advance.
Symlith 2003-06-14
  • 打赏
  • 举报
回复
gz
ISAKEEPER 2003-06-14
  • 打赏
  • 举报
回复
up
shilong 2003-06-13
  • 打赏
  • 举报
回复
非阻塞式的立即返回,而且阻塞式的就不一定了。。。
对于楼主的问题好象在哪篇见过,64K也许就是65536
bbildb 2003-06-13
  • 打赏
  • 举报
回复
65535ip包的最大值
是对的
baojian88888 2003-06-13
  • 打赏
  • 举报
回复
alphapaopao(炮炮)
也就是说,你的buf很大,也没关系,recv绘制一等到全部填满,才会返回

不同意。

recv 一般会立即返回,除非缓冲区一个字节也没有
并不是等到填满才返回
lashengcrh 2003-06-12
  • 打赏
  • 举报
回复
应该有限度吧!数据包太大会发送失败。
孤必有邻 2003-06-12
  • 打赏
  • 举报
回复
szBuf的长度类型是UINT,结合应用考虑,等于是没有长度上的限制。
(通常根据需要和硬件资源,设定在几K以内)
recv函数在未收到指定字节数时阻塞,直到收够指定字节数或超时或对方关闭SOCKET;
如果指定接收数目小于传过来的数目,则剩余字节在系统的SOCKET缓冲区中(当系统缓冲区满时,对方发送线程自动阻塞,停止发送),可以再次调用recv读取,(如果SOCKET关闭,则未接收数据丢失)。
bauhaus 2003-06-12
  • 打赏
  • 举报
回复
65535ip包的最大值
test7979 2003-06-12
  • 打赏
  • 举报
回复
你可以看一下 getsockopt 里面 SO_RCVBUF 的值,
每个SOCKET实现一般都有一个默认的值,你应当可以改
test7979 2003-06-12
  • 打赏
  • 举报
回复
其实这是和每个socket的具体实现有关DI..............
alphapaopao 2003-06-12
  • 打赏
  • 举报
回复
sock传输的数据包大小不会因想到你的recv的缓冲区大小,也就是说,你的buf很大,也没关系,recv绘制一等到全部填满,才会返回,他会填写好多个数据包。

============================================================================
提问题时标题要简明扼要地说明问题内容,切忌使用"急","求救"之类不能说明问题的标题
http://alphasun.betajin.com/ 遇到问题可以给我发消息,给我发信息时请附带原帖地址
DocWizard C++程序文档自动生成工具 | Wave OpenGL | HttpProxy | AjaxParser词法分析
magicist 2003-06-12
  • 打赏
  • 举报
回复
那SOCKET的缓存大小应该有限制把?

如果传输的数据超过了SOCKET的缓存限制,是否应该循环接受SOCKET数据?
wuchuncai 2003-06-12
  • 打赏
  • 举报
回复
最大8k,数据太多,分段发送
曾经的猎狐 2003-06-12
  • 打赏
  • 举报
回复
10k吧
happyhuang 2003-06-12
  • 打赏
  • 举报
回复
recv是tcp用的,数据量多大都没问题
recvfrom是udp用的,数据包超过max_size后面的部分会被截掉

18,357

社区成员

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

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