Java代码实现两台电脑之间传文件(1)

这里是利用JavaAPI中的Socket和输入输出流实现两台电脑之间文件的传递
首先需要有一个发送方,即服务器端,服务器提供URL地址还有端口号
然后需要一个接收方,即客户端,客户端负责使用URL和端口号连接服务器
最后我觉得代码里面的注解很详细了
帅气与美貌共存的博主就不多加叨叨了[滑稽斜眼笑]
实例代码:

文件发送方(Send.java):
//筱白痴
//文件发送方
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.net.Socket;

public class Send {
    public static void main(String[] args) {
        File src;       //需要传送的文件
        Socket socket;  //套接字
        FileInputStream open;   //读取文件
        FileOutputStream out;   //传送文件

        try {
            //需要传输的文件
            src = new File("E:\\shaohan.png");
            open = new FileInputStream(src);

            //连接服务器
            socket = new Socket("127.0.0.1", 2017);
            out = (FileOutputStream)socket.getOutputStream();

            //开始传送
            byte[] b = new byte[64];
            int n = open.read(b);
            int start = (int)System.currentTimeMillis();
            while (n != -1) {
                out.write(b, 0, n);
                n = open.read(b);
            }
            int end = (int)System.currentTimeMillis();
            System.out.println( "发送花费的时间:" + (end-start));
            //关闭流
            out.close();
            socket.close();
            open.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}
文件接收方(Receive.java):
//筱白痴:20171023
//接收指定文件
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.net.Socket;
import java.net.ServerSocket;

public class Receive {
    public static void main(String[] args) {
        File target;    //接收到的文件保存的位置
        FileOutputStream save;  //将接收到的文件写入电脑
        FileInputStream in;     //读取穿送过来的数据文件
        ServerSocket server;    //服务器
        Socket socket;          //套接字

        //处理客户端的请求
        try {
            //接受前文件的准备
            target = new File("E:\\tempshaohan.png");
            save = new FileOutputStream(target);

            server = new ServerSocket(2017);    //服务端口

            //等待客户端的呼叫
            System.out.println("等待客户端的呼叫");
            socket = server.accept();   //阻塞
            in = (FileInputStream)socket.getInputStream();

            //接收数据
            byte[] b = new byte[64];
            int n = in.read(b);
            int start = (int)System.currentTimeMillis();
            while (n != -1) {
                save.write(b, 0, n);    //写入指定地方
                n = in.read(b);
            }
            int end = (int)System.currentTimeMillis();
            System.out.println("接收花费的时间:" + (end-start));
            socket.close();
            server.close();
            in.close();
            save.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

奥,对了,帅气与美貌并存的博主提醒一下在场的吃瓜码农
这服务器端的电脑和客户端的电脑要在同一局域网下才能实现传输哦

你可能感兴趣的:(Java流的学习)