C#开发网络编程-应用层协议的选择问题?
一直有个疑问想不通,请教下:
实现网络文件传输(上传或者下载),已知FTP可以完成,但是FTP是基于TCP实现的,想找一个基于UDP开发的方法实现文件传输,不知如何实现?或者不用应用层协议,仅基于UDP实现传输,但又不知道文件如何拆分(便于传输)?
谢谢了
------解决方案--------------------我只做过UDP的数据传输小练习 贴出来分享一下
------解决方案--------------------UDP无连接,不可靠,用来传文件不大靠谱吧
------解决方案--------------------UDP包不一定能发送接收成功,不可靠,如果要udp来实现文件传输,你必须写程序来判断哪个部分传输没有成功,然后重新传输,会比TCP的实现复杂得多,不是一个简单的程序,
------解决方案--------------------如果要用UDP(比如NAT穿透的情况下),就要定义好传输协议,并实现重传机制。
比如,你可以定义这么一个包头(总共16个字节):
C# code
public partial class FileTransferHeader
{
public short MagicNumber = 0x5446; // 'FT' 特殊标记
public PacketType PacketType; // 类型
public uint RequestId; // 会话编号 (每个下载分配一个独特编号)
public uint PacketId; // 数据包编号
public uint Length; // 数据长度
}
public enum PacketType : short
{
Error = 0,
ReqDownload = 1,
AckDownload = 2,
ReqPackets = 3,
AckPackets = 4,
Data = 5,
Text = 6,
}
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
HttpRequest不好吗?