首页 > 代码库 > Java Socket文件上传

Java Socket文件上传

客户端:

import java.io.FileInputStream;
import java.net.Socket;

/**
 * Created by 290248126 on 14-5-11.
 */
public class Client {
    public static void main(String[] args) throws Exception {
        FileInputStream fileInputStream = new FileInputStream("e:/1.png");
        Socket socket = new Socket("localhost", 8088);
        byte[] buff = new byte[1024];
        int length;
        while ((length = fileInputStream.read(buff)) != -1) {
            socket.getOutputStream().write(buff, 0, length);
        }
        //至关重要,告诉服务器,客户端已经发送完毕
        socket.shutdownOutput();
        //获取服务器发过来的提示信息
        length = socket.getInputStream().read(buff);
        System.out.println("服务器:" + new String(buff, 0, length));
        socket.close();
        fileInputStream.close();
    }
}

服务器:

import java.io.FileOutputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * Created by 290248126 on 14-5-11.
 */
public class Server {
    public static void main(String[] args) throws Exception {
        FileOutputStream fileOutputStream = new FileOutputStream("e:/2.png");
        ServerSocket serverSocket = new ServerSocket(8088);
        Socket socket = serverSocket.accept();
        byte[] buff = new byte[1024];
        int length;
        //客户端代码中调用了socket的shutdownOutput()方法,使返回-1,循环结束
        while ((length = socket.getInputStream().read(buff)) != -1) {
            fileOutputStream.write(buff, 0, length);
        }
        socket.getOutputStream().write("文件上传成功!".getBytes());

        fileOutputStream.close();
        socket.close();
        serverSocket.close();
    }
}