挑战,敢用UDP在Internet上传送1G以上的文件吗?

ybeetle 2002-12-20 03:10:36
有人做过这种程序吗?我不要求最高较率,速度一般就行了。
  我是要写一个,大家能谈点经验吗?
...全文
45 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ybeetle 2003-03-02
  • 打赏
  • 举报
回复
我的UDP传送文件写完了。

http://hp.xilu.com/~maomao/AI/p2p/Xp2p.zip
  
  我写了一个类似TCP窗口的程序来传送UDP包。
要一个公用IP服务器,可以在两个子网间传送,就是P2P。 
  希望大家有空试试。
ybeetle 2003-01-06
  • 打赏
  • 举报
回复
szy2000(小刀) 何出此言,不要误导观众。 
  UDP绑定一个端口后,只要你不改变,只要发送得出去,理论上就收得到。 所以,内外网绝对没问题。。
Tiro 2003-01-06
  • 打赏
  • 举报
回复
UDP上面包装一下,和TCP可以做的没有什么区别,我写过TCP,也不是非常复杂,你可以尝试一下
bnwxf 2003-01-04
  • 打赏
  • 举报
回复
据我们的技术总监说upd的速度还是相当快的,我看过他写的一段重传代码,也就是
照[unix网络编程 第一卷]抄的,只不过是用了一个单独的线程来做这件事,发送端要维护一个已发送的request的队列,接受端要维护两个:正在处理的request队列、已发送的ask的队列。
lianghe 2003-01-03
  • 打赏
  • 举报
回复
没有什么难的啊,看电影时UDP传的数据量都在1G左右。只是要保证数据正确就得多写点了。
szy2000 2003-01-03
  • 打赏
  • 举报
回复
按你的需求,用udp好象也不行吧,外网的机器照样连不进来啊
everwindforce 2003-01-03
  • 打赏
  • 举报
回复
以tcp为模型:

1 建立连接
a 三次握手
b 使用额外的控制数据(tftp)
c 用序列号指明传输开始(需要考虑如何重用)
建立连接不是必需的,但它可以使协议更健壮,适用范围更大。

2 保证顺序和重传
序列号

3 滑动窗口
必要,大大提高了传输效率

4 端口号,校检,长度
udp已经有这些字段了,可免。

5 选项
段长度,窗口大小协商(免了吧,用固定值)

6 头长度
固定

7 带外数据


一个简单的pdu头:

syn:32b
window:16b
code bit: syn ack fin rst ver win(2b,窗口扩大) mss(2b 00-512,01-1024,10-1474,11-res)请求-应答(4b)保留(3b)

一共8字节。
很节约吧:-)
cai3995 2002-12-23
  • 打赏
  • 举报
回复
没有太大关系,用UDP加上重传机制,还是可以的(如果对差错控制要求严格),如果对差错要求不严格,那我简直不知道你为什么不选择UDP了:)
ybeetle 2002-12-21
  • 打赏
  • 举报
回复
我还不是想用TCP可是有些局域网内部的电脑不能建立SERVER,就是建好
了,外面也无法知道端口,反正没办法了。 
  我起火了,就要用UDP来写,哈哈哈。。。。。。


  这个程序的速度还是有要求,不能比用TCP慢上太多,慢30%可以接受。
ybeetle 2002-12-21
  • 打赏
  • 举报
回复
慢50%可行吗?再慢就没用了。
我想这个问题,所关系的方面太多了,只有实验一次了。。
imquestion 2002-12-21
  • 打赏
  • 举报
回复
只慢一点的话,实现难度太大了。
jacka 2002-12-20
  • 打赏
  • 举报
回复
用UDP没有什么大问题啊,只是你在UDP上层必须有一个重发机制,而实际上
TCP已经有这种机制,所以在UDP基础上自己再去做一个这样的机制,除非
有特殊原因,否则很显多余。
至于ksyou所说UDP出错概率大,不敢苟同。只要你在UDP上层有纠错重发,
我想可以做到和用tcp传一样的效果。出错,并不是udp的错。
ksyou 2002-12-20
  • 打赏
  • 举报
回复
我觉得还是不用udp为好,这么大的东西,出现错误的概率太大了
imquestion 2002-12-20
  • 打赏
  • 举报
回复
你在编什么程序?
imquestion 2002-12-20
  • 打赏
  • 举报
回复
要看什么要求了。
要求不要求保证正确性,如果不要求就太容易了。
要求的话,效率越高,实现起来编程就越多,越复杂。
最简单的就是,发送一个数据,等待一个ack,
等待超时的话,就重发数据,再等待,超时几次的话,就退出并且提示。

例子就是tftp了,(举了无数次)。

4,354

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧