udp 传输大小 不怕花分,在线等待(66分)

  • 主题发起人 主题发起人 zdy0155
  • 开始时间 开始时间
Z

zdy0155

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么我的udp,经过路由,只能最大发不到1k呢,怎么回事啊,请教各位
 
你的buffer定的多大?
 
这个buffer已经考虑了,不是他的事,关键事,经过路由在internet,发送udp,超过1472 就不发送了。要是分片的话,可以自动分片么,怎么设置啊,怎么写代码啊 ,
 
你是用NMUDP1的吗,我所用的是不能多于2K字符(局域网上)。。。
 
Windows最大可以支持传输的UDP包大小为64K-1,除掉寻址信息,UDP长度,UDP校验和等占有的8个字节,一次最大可发送的数据大小为1024*64-9,当然,也有些UDP控件自己会限制包的大小,在经过路由网关时,过大的数据包也有可能被丢弁.
 
你可以循环发呀,不要一次就发完了,也就是说分开包来发
 
像【清风】说的那样,循环发就OK了, upd数据容易丢失,发大包数据不划算,效率不高
 
自己分包也很简单啊
 
我说的buffer就是用来分片的啊,你用一个流,然后每次读sizeof(buffer)这么多数据传.
 
请问各位,不用程序分的话,能否用路由或其他方式分呢?
 
这两个分片是不同概念吧.一个是针对与源文件的大小进行分片,一个是针对与网络中的数据包进行分片,工作的层次不同吧。
 
怎样针对网络中的数据包进行分片呢,
请问Undefine,
 
这个应该就是设置象路由等这些物理设备吧,能抓包的软件可能也有做得到的吧。我没设过,不好意思。
 
设置分片:
var
Val: Integer;
Val:=0;
setsockopt(Sock, IP_OPTIONS, IP_DONTFRAGMENT, @Val, SizeOf(Val));
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部