`
行者买刀
  • 浏览: 191515 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

基于UDP传输

阅读更多

 

(原创)

这两天打算用UDP传输文件的 test,下午大概测试了一下,可以实现两台计算机之间的UDP传输.但还有些小问题,估计明天再调试一下,UDP这块就告一段落了.

 主要思想步骤如下:

 1.假如现在有两个类,一个叫FileSender, 另一个类叫FileAccepter(接收文件),

 当FileSender要传送给FileAccepter文件时,他首先发一个信息包(MyPakcet),里面包含着文件信息如文件大小,FileAccepter收到就弹出对话框访问用户是否接受文件,当FileAccepter点击接收文件之后,FileAccepter端就开始发出一个(MyPakcet)包,表示响应并且接受文件的接收.这时假定FileSender接收到响应,然后两者就开始建立连接.

  FileSender专门启一个线程发数据包,而FileAccepter专门启一个线程在接收数据包.

它们之间传送的数据包用MyPacket;

下面看看个人定义的MyPakcet数据包:

     MyPacket{

     private int type;//消息类型

     private Datable datable;//消息内容,它是一个抽象类,任何消息类型都是它的子类,包括传输文件的数据包

  }

   传输文件的数据包定义如下:

    FileData extends Datable implements Serializable{

    public static final long SerializationUID = 20071010L;//   

    private byte[] data;//数据  

   //此类还有两个转换方法分别是将byte[]转换为MyPacket对象,和MyPacket转换为byte[]

  // 大家可以自己去实现

   public static MyPacket getMyPacket(byte[]){

  }

  public static byte[]   getByteArray(MyPakcet m){

  }

}

   传输文件时,文件信息包如下:

   FileInfoData extends Datable implements Serializable{

     ......

    //文件信息

   private String fileName;

   private int count;//文件分成几块

   private long length;//文件的大小

}

上面所写的这两个类FileInfoData和FileData都是Datable的子类,

  当我们发送数据时都是以包MyPakcet封装在DatagramPacket里发送出去的,接收时同样又把收到的byte[]还原成MyPakcet对象.这样就可以实现相互之间的通信.

  希望以上这些能对那些初入UDP的学者能有点帮助.

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics