马上要做课件了!题目是:点对点的文件传输软件
具体要求:
1:直接使用TCP或UDP协议实现通信
2:能点对点的正确传输文件
3:传输包的长度可方便的在运行界面进行定制
4:可方便的在运行界面中指定好传输的文件
我想用JAVA实现,但我对socket编程不太熟悉,对UI还行
大家谈谈该如何实现,具体用到哪些技术? 该软件实现难度如何?若有实现代码可以参考,小弟感激不尽!

解决方案 »

  1.   

    JAVA编写网络很方便的,看看相应的库或例子。还得研究一下简单的多线程哦,如果你需要介面的话
      

  2.   

    我是VC++的初学者,老师却给我们出了道难题:
    局域网内的点对点文件传输实现。
    要求:机器的寻址原理,文件的传输原理,怎么进行文件的完整传输问题,验证方式如何,算法原理说明,包括文件的分割等,使用什么协议,使用的组件是什么,自定义的组件类的说明。
    语言要求:VC++
    请高手大哥帮帮忙,小弟万分感谢!
      

  3.   

    参考一些java 的socket 例子
      

  4.   

    这个不要使用socket,因为你要用到HTTP协议且支持断点传输,而java的net包是作好了的,你只需要使用就可以了,用io包很容易就可以指定续传位置。用http实现断点续传的核心代码我给你:import java.io.RandomAccessFile;
    import java.io.File;
    import java.io.InputStream;
    import java.io.DataInputStream;
    import java.io.BufferedInputStream;
    import java.io.FileInputStream;import java.net.HttpURLConnection;
    import java.net.ConnectException;
    import java.net.URL;import java.lang.Runnable;
    import java.lang.Thread;import java.util.Date;
    public class TestUpDown2 implements Runnable{
    private HttpURLConnection connection;//存储连接
    private int downsize = -1;//下载文件大小,初始值为-1
    private int downed = 0;//文加已下载大小,初始值为0
    private RandomAccessFile savefile;//记录下载信息存储文件
    private URL fileurl;//记录要下载文件的地址
    private DataInputStream fileStream;//记录下载的数据流

    public TestUpDown2(){
    try{
    /*开始创建下载的存储文件,并初始化值*/
    File tempfileobject = new File("h:\\webwork-2.1.7.zip");
    if(!tempfileobject.exists()){
    /*文件不存在则建立*/
    tempfileobject.createNewFile();
    }
    savefile = new RandomAccessFile(tempfileobject,"rw");

    /*建立连接*/
    fileurl = new URL("https://webwork.dev.java.net/files/documents/693/9723/webwork-2.1.7.zip");
    connection = (HttpURLConnection)fileurl.openConnection();
    connection.setRequestProperty("Range","byte="+this.downed+"-");

    this.downsize = connection.getContentLength();
    //System.out.println(connection.getContentLength());

    new Thread(this).start();
    }
    catch(Exception e){
    System.out.println(e.toString());
    System.out.println("构建器错误");
    System.exit(0);
    }
    }

    public void run(){
    /*开始下载文件,以下测试非断点续传,下载的文件存在问题*/
    try{
    System.out.println("begin!");
    Date begintime = new Date();
    begintime.setTime(new Date().getTime());
    byte[] filebyte;
    int onecelen;
    //System.out.println(this.connection.getInputStream().getClass().getName());
    this.fileStream = new DataInputStream(
    new BufferedInputStream(
    this.connection.getInputStream()));
    System.out.println("size = " + this.downsize);
    while(this.downsize != this.downed){
    if(this.downsize - this.downed > 262144){//设置为最大256KB的缓存
    filebyte = new byte[262144];
    onecelen = 262144;
    }
    else{
    filebyte = new byte[this.downsize - this.downed];
    onecelen = this.downsize - this.downed;
    }
    onecelen = this.fileStream.read(filebyte,0,onecelen);
    this.savefile.write(filebyte,0,onecelen);
    this.downed += onecelen;
    System.out.println(this.downed);
    }
    this.savefile.close();
    System.out.println("end!");
    System.out.println(begintime.getTime());
    System.out.println(new Date().getTime());
    System.out.println(begintime.getTime() - new Date().getTime());
    }
    catch(Exception e){
    System.out.println(e.toString());
    System.out.println("run()方法有问题!");
    }
    }

    public static void main(String[] src) throws Exception{
    new TestUpDown2();
    }
    }