CnPack Forum


 
Subject: CNUDP为什么只能发送1KB的文件?
topdemon
新警察
Rank: 1



UID 41276
Digest Posts 0
Credits 36
Posts 14
点点分 36
Reading Access 10
Registered 2008-11-14
Status Offline
Post at 2008-11-21 02:36  Profile | Blog | P.M. 
CNUDP为什么只能发送1KB的文件?

我测试了一下发送3KB的都发送后都没反应只有发送1KB的文件才能传送成功
Top
topdemon
新警察
Rank: 1



UID 41276
Digest Posts 0
Credits 36
Posts 14
点点分 36
Reading Access 10
Registered 2008-11-14
Status Offline
Post at 2008-11-22 15:48  Profile | Blog | P.M. 
没人回答这个问题?
Top
zjy
管理员
Rank: 9Rank: 9Rank: 9



UID 2
Digest Posts 6
Credits 2385
Posts 1543
点点分 2385
Reading Access 102
Registered 2002-12-16
Location China
Status Offline
Post at 2008-11-22 18:20  Profile | Site | Blog | P.M. 
请检查一下你的使用方法

这个控件应该是支持大文件传输的。




Zhou JingYu
CnPack Administrator
http://www.cnpack.org/
Top
topdemon
新警察
Rank: 1



UID 41276
Digest Posts 0
Credits 36
Posts 14
点点分 36
Reading Access 10
Registered 2008-11-14
Status Offline
Post at 2008-11-22 22:43  Profile | Blog | P.M. 
谢谢,组件包中带的例的子也不能发送大的也只有发送1KB的文件
Top
jyh11111 (觉悟)
新警察
Rank: 1



UID 20792
Digest Posts 0
Credits 14
Posts 5
点点分 14
Reading Access 10
Registered 2007-7-21
Status Offline
Post at 2008-11-28 15:14  Profile | Blog | P.M. 
关于此问题QQ谈话内容:
觉悟(54156167) 14:36:51
CNUDP一次只能发送接收小于2048似呼不妥!
[川]IISUSER<iisfirewall@126.com> 14:37:23
UDP的包限制吧
[川]IISUSER<iisfirewall@126.com> 14:37:37
就算没收完 你可以继续收
觉悟(54156167) 14:37:41
不是
[川]IISUSER<iisfirewall@126.com> 14:37:55
那你觉得啥不妥啊
[沪]管理员刘啸(21808552) 14:38:19
觉悟,你说的这个限制具体是指啥地方?
觉悟(54156167) 14:38:20
CnUDP.pas 522行
IBuffSize := WinSock.recvfrom(ThisSocket, IBuff, 2048, 0, from, i);
觉悟(54156167) 14:38:53
这样不好
[鄂]峪飞鹰(185845281) 14:39:33
udp的包大了,路由器会丢掉的
[川]IISUSER<iisfirewall@126.com> 14:40:14
峪飞鹰 看我最上面发的问题
觉悟(54156167) 14:40:22
第一,这个包的大小限制不应写死,应可以定义
觉悟(54156167) 14:40:45
第二.cnUDP.sendbuf中应限制一下
[沪]管理员刘啸(21808552) 14:42:01
那是可以反复调用接收吧?
[沪]管理员刘啸(21808552) 14:42:10
这个2048是内部缓冲区大小。
[川]IISUSER<iisfirewall@126.com> 14:42:47
2048很恰当
觉悟(54156167) 14:42:50
可是CNUDP没有反复接收啊,如果大于2048就会直接OVER了
[川]IISUSER<iisfirewall@126.com> 14:43:06

[川]IISUSER<iisfirewall@126.com> 14:43:17
有吗
觉悟(54156167) 14:43:53
直接略去了
[川]IISUSER<iisfirewall@126.com> 14:44:22
个人感觉不会 你测试过了?
觉悟(54156167) 14:44:49
我当然试了
[沪]管理员刘啸(21808552) 14:45:13
我看了看代码似乎没这个循环。
[沪]管理员刘啸(21808552) 14:45:24
我先记下来,找找作者zjy看看。
觉悟(54156167) 14:45:25
没有
觉悟(54156167) 14:46:16
这就是论谈中有人说CNUDP只能发送小于1K(它的数据有误)文件的原因!..
觉悟(54156167) 14:47:55
另外反复接收的说法不准确吧。。。UDP一次发送只有一次接收吧,TCP才有分包接收吧....如果说错了,请指正
[沪]管理员刘啸(21808552) 14:48:52
分包是IP的规矩,这个倒是和TCP还是UDP没关系。
[沪]管理员刘啸(21808552) 14:49:50
要不觉悟把你的这段分析贴论坛的回帖里?让提这个问题的人也看看?
觉悟(54156167) 14:50:20
好的!
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6756
Posts 3554
点点分 6756
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2008-11-29 10:41  Profile | Blog | P.M. 
UDP协议本身不支持分包发送,因此接收的时候倘若缓冲区太小就没法接收完整的包从而出错。
最新的CVS上已经更新了一下CnUDP,加入了一个控制接收缓冲区大小的属性,可以更改此值而接收更大的UDP数据包。
Top
topdemon
新警察
Rank: 1



UID 41276
Digest Posts 0
Credits 36
Posts 14
点点分 36
Reading Access 10
Registered 2008-11-14
Status Offline
Post at 2008-11-29 20:48  Profile | Blog | P.M. 
呵呵多谢我一会试试,上次我换成用TCP了
Top
 




All times are GMT++8, the time now is 2024-4-24 17:37

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.011797 second(s), 7 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP