读书人

C#开发网络编程-应用层协议的选择有关

发布时间: 2012-04-23 13:17:38 作者: rapoo

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,}
[解决办法]
探讨

如果要用UDP(比如NAT穿透的情况下),就要定义好传输协议,并实现重传机制。

比如,你可以定义这么一个包头(总共16个字节):
C# code

public partial class FileTransferHeader
{
public short MagicNumber = 0x5446; // 'FT' 特殊标记
public PacketType P……

[解决办法]
探讨
……
NAT 没穿透怎么办?

[解决办法]
HttpRequest不好吗?

读书人网 >C#

热点推荐