CnPack Forum » CnVCL 组件包 » CNUDP为什么只能发送1KB的文件?


2008-11-21 02:36 topdemon
CNUDP为什么只能发送1KB的文件?

我测试了一下发送3KB的都发送后都没反应只有发送1KB的文件才能传送成功

2008-11-22 15:48 topdemon
没人回答这个问题?

2008-11-22 18:20 zjy
请检查一下你的使用方法

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

2008-11-22 22:43 topdemon
谢谢,组件包中带的例的子也不能发送大的也只有发送1KB的文件

2008-11-28 15:14 jyh11111
关于此问题QQ谈话内容:
觉悟(54156167) 14:36:51
CNUDP一次只能发送接收小于2048似呼不妥!
[川]IISUSER<[email]iisfirewall@126.com[/email]> 14:37:23
UDP的包限制吧
[川]IISUSER<[email]iisfirewall@126.com[/email]> 14:37:37
就算没收完 你可以继续收
觉悟(54156167) 14:37:41
不是
[川]IISUSER<[email]iisfirewall@126.com[/email]> 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<[email]iisfirewall@126.com[/email]> 14:40:14
峪飞鹰 看我最上面发的问题
觉悟(54156167) 14:40:22
第一,这个包的大小限制不应写死,应可以定义
觉悟(54156167) 14:40:45
第二.cnUDP.sendbuf中应限制一下
[沪]管理员刘啸(21808552) 14:42:01
那是可以反复调用接收吧?
[沪]管理员刘啸(21808552) 14:42:10
这个2048是内部缓冲区大小。
[川]IISUSER<[email]iisfirewall@126.com[/email]> 14:42:47
2048很恰当
觉悟(54156167) 14:42:50
可是CNUDP没有反复接收啊,如果大于2048就会直接OVER了
[川]IISUSER<[email]iisfirewall@126.com[/email]> 14:43:06

[川]IISUSER<[email]iisfirewall@126.com[/email]> 14:43:17
有吗
觉悟(54156167) 14:43:53
直接略去了
[川]IISUSER<[email]iisfirewall@126.com[/email]> 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
好的!

2008-11-29 10:41 Passion
UDP协议本身不支持分包发送,因此接收的时候倘若缓冲区太小就没法接收完整的包从而出错。
最新的CVS上已经更新了一下CnUDP,加入了一个控制接收缓冲区大小的属性,可以更改此值而接收更大的UDP数据包。

2008-11-29 20:48 topdemon
呵呵多谢我一会试试,上次我换成用TCP了

页: [1]


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.