hasuterran 发表于 2012-5-10 15:22:00

TCPRECV函数存在最大收取限制吗?

$recv=TCPRecv($connection,13339)

收取的代码如上,我的意思是在收取13339字节的数据,可是测试发现,每次收到2920个字节的时候就自动截止了。求高手指教这是为何?最好能提供下解决方案,多谢!

happytc 发表于 2012-5-10 15:39:49

先论坛搜吧
这个已经讨论过无数次了

hasuterran 发表于 2012-5-10 15:45:18

...已经搜过了,大多是提的中文字符的问题,没有提到收取上限啊。需要用循环收取来解决吗?

xiehuahere 发表于 2012-5-10 17:25:23

表示关注,虽然我目前还没有一下子收这么多数据的要求。

happytc 发表于 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连接已经关掉了。

49666684 发表于 2012-6-8 20:47:52

那怎样能实现循环接收呢?

xms77 发表于 2012-6-8 21:26:06

回复 6# 49666684
看帮助吧,兄弟啊!有例子的
页: [1]
查看完整版本: TCPRECV函数存在最大收取限制吗?