社区
网络编程
帖子详情
Tcp协议 以块的方式发送文件有什么利弊?
baiduan
2008-03-31 02:45:25
RT,都说Tcp是基于流的,我写了个程序(c/s)的
客户端将文件分成数据块发送的,
那位大虾给讲下利弊啊。
阐述最好的大虾敬谢100分,
补充的大虾重新开帖卖血酬谢。
4月3日结帖。谢谢。
...全文
322
13
打赏
收藏
Tcp协议 以块的方式发送文件有什么利弊?
RT,都说Tcp是基于流的,我写了个程序(c/s)的 客户端将文件分成数据块发送的, 那位大虾给讲下利弊啊。 阐述最好的大虾敬谢100分, 补充的大虾重新开帖卖血酬谢。 4月3日结帖。谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
baiduan
2008-04-02
打赏
举报
回复
http://topic.csdn.net/u/20080402/09/0c21ede3-173c-47d4-ad56-6c287a99de9a.html
baiduan
2008-04-02
打赏
举报
回复
等不了了,今天结帖吧。
觉得fox1999 和cnzdgs 两位大虾
说的都好,请进分贴拿分。谢谢。
其他大虾们有什么见解也请继续
跟贴。4月份我都会关注这贴,
好的见解的话再开分贴吐血酬谢。
谢谢。
ZiSheng
2008-04-01
打赏
举报
回复
[Quote={0}]{1}
你所谓的块是什么意思?是以下三种的哪一种?
1、TCP连接,每次发一个块,全部send完再断开连接。
2、每次连接发一个块就断开。
3、用UDP每次发一个块。
第1种方式比较简单一些;
第2种方式处理麻烦而且效率低,一般不用;
第3种方式需要自己处理包的顺序并检查丢包重发,包要小一些。
[/Quote]
每次连续的send,很可能另一端还没有接受到数据,就会把数据淹没了,建议send一次,recv一次,还有发送和接受的数据的大小,要严格的相等(前提,阻塞模式)
cnzdgs
2008-04-01
打赏
举报
回复
你的问题用TCP和UDP都可以。
TCP协议会重新合并和拆分你多次发出的数据,接收方分多次接受,每次收到的数据长度不定,但数据整体是与发送次序一致的。举个例子,假设你用一个循环发送1MB字节数据,每次发送1K,接收方用1MB的缓冲区用循环接收,可能第1次收到前4K数据,第2次收到接下来的2K,第3次可能又收到接下来的10K……,假设连接中间断开,则收到的数据都是连续的。
UDP协议不会改变你每次发送的数据长度,但不能保证数据一定能到达目的地,而且接收方收到数据的次序可能与发送次序是不一致的。还用上面的例子说明一下,接收方收到的第1个包可能是第2K的数据,而第2次收到第1K数据,第3次收到第4K数据,可能第3K数据一直没有收到……。
使用TCP协议比较简单,一端只管按顺序发送,另一端只管接收,接收到的数据直接写入文件,如果连接中断,下次连接继续从断开处传送数据即可。但由于TCP要保证数据有序,所以经常要花时间等待前面的数据到达后才可以接收,所以效率可能不如UDP高。
使用UDP协议,接收方需要告诉发送方哪个包没有受到,让发送方重发一次。接收方收到的数据要根据附加信息确定数据的位置,调整文件指针后再写入文件。使用UDP协议还需要考虑包的大小问题,因为包越大越容易在传输中途出错,只要出错整个包就会被丢弃,但如果包过小传输效率就会降低,所以需要从中选择一个合适的大小,具体与应用和网络情况有关,可以通过测试来选择最佳大小。
fox1999
2008-04-01
打赏
举报
回复
我认为的方式如上,但是QQ群里的群友,是某个非常著名的大
公司职员,他提出异议,大意是TCP是流的,我的方法更象UDP。
让我重新考虑下传输方式,提高效率。
------------------------------
一般來說是沒有什麼區別的。
而你那個朋友說的,大約是說像 FTP 那樣。在發文件以前,告訴對方文件名與文件長度,然後就直接發文件內容。
這樣的好處是文件內容不用封包組包,在網絡環境好時,速度應該比你現在用的方法更快。
而實際網絡通訊不只是傳文件。可能還有很多別的功能,而傳文件只是基中功能之一。這樣一樣,一般的設計方法是自定義一個協議,而以後所有的通訊都是基於這個協議的。這樣傳文件也做成協議命令之一也是可以的。
你的方法能解決實際問題就不用管他。整個系統的穩定性更重要。
baiduan
2008-04-01
打赏
举报
回复
ft,4月1日了。
我没描述好。
我们这个项目有N个小的数据库子系统和1个主数据库系统,
他们之间的数据交换是通过Internet互相交换数据文件,
一般数据文件很小--10M,大的话会在600M左右(每年盘点)
数据不要求实时,但是要求断点续传和文件完整。
我认为的方式如上,但是QQ群里的群友,是某个非常著名的大
公司职员,他提出异议,大意是TCP是流的,我的方法更象UDP。
让我重新考虑下传输方式,提高效率。
所以想问问Tcp怎么基于流是什么意思?我该怎么修改?
cnzdgs
2008-03-31
打赏
举报
回复
[Quote=引用 4 楼 baiduan 的回复:]
1、TCP连接,每次发一个块,全部send完再断开连接。
用的是这种方式,因为要断点,还+了包头。
这种方式有什么缺点啊。。。
[/Quote]这种方式是完全依赖于协议,灵活度较低。如果用UDP会更灵活一些,有可能达到更高一些的传输效率。
lk_cool
2008-03-31
打赏
举报
回复
每次发送的块记下大小,发送过去。在另一端判断一下收到的大小是否合适。也可以加入CRC检验,以确认发送的数据是正确到达对方的。
我觉得你是不是认为TCP是基于流的,而你是分块的有什么不同?
你说的是断点是不是断点续传?
1、你不分块你怎么传?你理解的流是怎样的?你的做法应该就是基于流的。
2、加了包头是不是要多发一些内容啊。
3、断点的话,你可以先看看远程有没有你未传完的文件,将未传完的文件大小发过来,从未传完的地方开始就传输就是了。
做法很多,看应用场合。
你可以把你的应用场景描述一下,一块讨论。
baiduan
2008-03-31
打赏
举报
回复
//定义一个协议,指明是从哪开始发的,发了多少字节
//==================
这就是包头的主要内容
baiduan
2008-03-31
打赏
举报
回复
1、TCP连接,每次发一个块,全部send完再断开连接。
用的是这种方式,因为要断点,还+了包头。
这种方式有什么缺点啊。。。
cnzdgs
2008-03-31
打赏
举报
回复
你所谓的块是什么意思?是以下三种的哪一种?
1、TCP连接,每次发一个块,全部send完再断开连接。
2、每次连接发一个块就断开。
3、用UDP每次发一个块。
第1种方式比较简单一些;
第2种方式处理麻烦而且效率低,一般不用;
第3种方式需要自己处理包的顺序并检查丢包重发,包要小一些。
scq2099yt
2008-03-31
打赏
举报
回复
每种方式都会有利有弊
ouyh12345
2008-03-31
打赏
举报
回复
定义一个协议,指明是从哪开始发的,发了多少字节
计算机网络 传输层
TCP
和UDP
协议
Re: 计算机网络 传输层
TCP
和UDP
协议
# 传输层
协议
TCP
和 UDP 的应用场景 要
发送
的内容多,需要将
发送
的内容分成多个数据包
发送
(
TCP
) 要
发送
的内容少,一个数据包就能
发送
全部内容(UDP) # 传输层
协议
和应用层...
TCP
/IP
协议
学习总结
TCP
/IP
协议
学习总结网络基础知识连接人与人的计算机网络
协议
随处可见的
协议
协议
的必要性计算机中的
协议
分组交换
协议
协议
分层与OSI参考模型
协议
的分层OSI参考模型OSI
协议
与OSI参考模型OSI参考模型中各个分层的作用7层通信 网络基础知识 下面总结了深入理解
TCP
/IP所必备的基础知识,其中包括计算机与网络发展的历史及其标准化过程、OSI参考模型、网络概念的本质、网络构建的设备等。 连接人与人的计算机网络 计算机网络最初的目的是连接一个个独立的计算机,使它们组成一个更强有力的计算环境。简而言之,就是为了
史上最全的
TCP
/IP
协议
原理
TCP
/IP
协议
原理 一、
TCP
/IP
协议
简介及起源 1、什么是
TCP
/IP
TCP
/IP是TransmissionControlProtocol /InternetProtocol(传输控制
协议
/互联网络
协议
)的缩写。
TCP
和IP只是其中的2个
协议
,也是很重要的2个
协议
,所以用
TCP
/IP来命名这个互联网
协议
族,实际上,它还包括其他
协议
,比如UDP、ICMP、IGMP、ARP/RARP等。传输控制
协议
:用于处理任何长度消息的可靠传输,互联网络
协议
除了具有其...
网络
协议
中HTTP,
TCP
,UDP,Socket,WebSocket的优缺点/区别
先说一下网络的层级:由下往上分为 物理层、数据链路层、网络层、传输层、会话层、表示层和应用层 1、
TCP
和UDP
TCP
:是面向连接的一种传输控制
协议
。属于传输层
协议
。
TCP
连接之后,客户端和服务器可以互相
发送
和接收消息,在客户端或者服务器没有主动断开之前,连接一直存在属于长连接。 优点:安全、传输数据无大小限制、准确可靠,先发先至 缺点:效率低,不能做离线任务、连接有耗时 UDP:是面向非连接的用户数据报
协议
。属于传输层
协议
。所谓的无连接就是在传输数据之前不需要交换信息,没有握手建立连接.
网络
协议
概述(网络层次结构、
TCP
、UDP)
目录 1.网络
协议
纵览 网络
协议
层次结构 更加详细的各层网络
协议
: 数据封装 数据解封 2.网络
协议
之
TCP
连接建立和断开 拥塞预防及控制: 选择性应答:
TCP
的不足——队首阻塞: 3.网络
协议
之UDP 4.网络
协议
之NAT穿透 1.网络
协议
纵览 参考文章:http://www.cnblogs.com/syfwhu/p/5237652.html 网络
协议
网络
协议
是网络上所有设备(网络服务器、计算机及交换机、路由器、防火墙等)之间通信规则的集合,它规定了通信时信息必须
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章