找回密码
 加入
搜索
查看: 3553|回复: 6

[网络通信] TCPRECV函数存在最大收取限制吗?

  [复制链接]
发表于 2012-5-10 15:22:00 | 显示全部楼层 |阅读模式
$recv=TCPRecv($connection,13339)

收取的代码如上,我的意思是在收取13339字节的数据,可是测试发现,每次收到2920个字节的时候就自动截止了。求高手指教这是为何?最好能提供下解决方案,多谢!
发表于 2012-5-10 15:39:49 | 显示全部楼层
先论坛搜吧
这个已经讨论过无数次了
 楼主| 发表于 2012-5-10 15:45:18 | 显示全部楼层
...已经搜过了,大多是提的中文字符的问题,没有提到收取上限啊。需要用循环收取来解决吗?
发表于 2012-5-10 17:25:23 | 显示全部楼层
表示关注,虽然我目前还没有一下子收这么多数据的要求。
发表于 2012-5-10 18:31:36 | 显示全部楼层
回复 3# hasuterran


    用TCPSend()函数时你想发多大的数据理论上都可以,但系统不是一次性给你发送的,而是自动分多次发送,一次联接最多只发送TCP Window size的大小,而这个‘TCP窗口尺寸’是由你的系统里的注册表里的TCPWindowSize/GlobalTCPWindowSize/MaxTCPWindowSize以及你的以太网接口相关限制决定的。而在接收端,也就是TCPRecv()函数,一次联接最多只能接收Server端的上述几个TCPWindowSize的最小值,也就是没有确定的所谓最大数据,一般每次发送最大限制在2K字节是没有问题的。一旦要接受的数据超过TCPWindowSize,若你不用循环来不停地接收的话,也就只能收到第一次联接时的数据了。所以一般服务器端都要在循环里接收数据直到检测到数据已经结束的信息:若数据全是ASCII码,其有内部数据结束标记;或者是Send端告诉Recv端你所传的数据大小;或检测到TCP连接已经关掉了。
发表于 2012-6-8 20:47:52 | 显示全部楼层
那怎样能实现循环接收呢?
发表于 2012-6-8 21:26:06 | 显示全部楼层
回复 6# 49666684
看帮助吧,兄弟啊!有例子的

评分

参与人数 1金钱 +10 收起 理由
happytc + 10 很重要!

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-28 09:44 , Processed in 0.073140 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表