java socket 发送文件

9/6/2015来源:Java教程人气:2180

java socket 发送文件

客户端:

package tt;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.net.InetSocketAddress;import java.net.Socket;public class ClientTcpSend {    public static void main(String[] args) {        int length = 0;        byte[] sendByte = null;        Socket socket = null;        DataOutputStream dout = null;        FileInputStream fin = null;        try {          try {            socket = new Socket();            socket.connect(new InetSocketAddress("127.0.0.1", 33456),10 * 1000);            dout = new DataOutputStream(socket.getOutputStream());            File file = new File("E:\\TU\\DSCF0320.JPG");            fin = new FileInputStream(file);            sendByte = new byte[1024];            dout.writeUTF(file.getName());            while((length = fin.read(sendByte, 0, sendByte.length))>0){                dout.write(sendByte,0,length);                dout.flush();            }            } catch (Exception e) {            } finally{                if (dout != null)                    dout.close();                if (fin != null)                    fin.close();                if (socket != null)                    socket.close();        }        } catch (Exception e) {            e.PRintStackTrace();        }    }}

服务端:

package test;import java.io.DataInputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class ServerTcpListener implements Runnable {    @Override    public void run() {    }    public static void main(String[] args) {        try {            final ServerSocket server = new ServerSocket(33456);            Thread th = new Thread(new Runnable() {                @Override                public void run() {                    while (true) {                        try {                           System.out.println("开始监听。。。");                           Socket socket = server.accept();                           System.out.println("有链接");                           receiveFile(socket);                        } catch (Exception e) {                            e.printStackTrace();                        }                    }                }            });            th.run();        } catch (Exception ex) {            ex.printStackTrace();        }    }    public static void receiveFile(Socket socket) throws IOException {        byte[] inputByte = null;        int length = 0;        DataInputStream din = null;        FileOutputStream fout = null;        try {            din = new DataInputStream(socket.getInputStream());                        fout = new FileOutputStream(new File("E:\\"+din.readUTF()));            inputByte = new byte[1024];            System.out.println("开始接收数据...");            while (true) {                if (din != null) {                    length = din.read(inputByte, 0, inputByte.length);                }                if (length == -1) {                    break;                }                System.out.println(length);                fout.write(inputByte, 0, length);                fout.flush();            }            System.out.println("完成接收");        } catch (Exception ex) {            ex.printStackTrace();        } finally {            if (fout != null)                fout.close();            if (din != null)                din.close();            if (socket != null)                socket.close();        }    }}