Tcp文件上传

来源:互联网 发布:极客帮是什么软件 编辑:程序博客网 时间:2024/05/21 19:33

服务器端:

package TCPUploadFile;import java.io.DataInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;/** * Created by Administrator on 2016/8/17. */public class UploadServer {    public static void main(String[] args) {        try {            ServerSocket serverSocket=new ServerSocket(10000);            Socket accept;            while ((accept=serverSocket.accept())!=null){                InputStream inputStream = accept.getInputStream();                DataInputStream dataInputStream = new DataInputStream(inputStream);                String filename = dataInputStream.readUTF();                long filesize = dataInputStream.readLong();                FileOutputStream fileOutputStream = new FileOutputStream(filename);   //上传到工程根目录                byte[] bytes = new byte[10240];                int len;                while (filesize>0){                    len=dataInputStream.read(bytes);                    fileOutputStream.write(bytes,0, (int) Math.min(filesize,len));                    //由于inputStream为一个阻塞的输入流,一直有东西输入进来,或者等待输入,所以文件的最后可能会读多了,最后根据文件大小读取                    filesize=filesize-len;                }                accept.close();                fileOutputStream.close();                System.out.println("文件接收完毕");            }        } catch (IOException e) {            e.printStackTrace();        }    }}

客户端

package TCPUploadFile;import java.io.*;import java.net.Socket;/** * Created by Administrator on 2016/8/17. */public class UploadClient {    public static void main(String[] args) {        try {            Socket socket = new Socket("127.0.0.1", 10000);  //设置接受服务器的ip和端口            File file = new File("D:\\test.mp4");            OutputStream outputStream = socket.getOutputStream();            DataOutputStream dataOutputStream = new DataOutputStream(outputStream);            dataOutputStream.writeUTF(file.getName());            dataOutputStream.writeLong(file.length());            FileInputStream fileInputStream = new FileInputStream(file);            byte[] bytes = new byte[102400];            int length=0;            while ((length=fileInputStream.read(bytes))!=-1){                dataOutputStream.write(bytes,0,length);            }            System.out.println("文件上传完毕");        } catch (IOException e) {            e.printStackTrace();        }    }}
1 0
原创粉丝点击