Wie der transfer-Datei mit IOUtils.kopieren Sie die durch die Java-Sockets

Zurzeit arbeite ich mit Java-Sockets. Erstellt habe ich eine server-side-code-und client-Seite code transfer file über socket. Ich habe erfolgreich übertragen der Dateien vom client zum server mit dem gleichen system, aber wenn ich versuchte, mit der die verschiedenen Systeme in den unterschiedlichen Plattform, dann ist es nicht funktioniert. Die server-Seite und client-Seite-codes sind unten angegeben.

Server-side-code

public class FileTransferTestServer extends Thread{

    private final Socket socket;

    public FileTransferTestServer(Socket socket) {
        //TODO Auto-generated constructor stub
        this.socket = socket;
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        //TODO Auto-generated method stub

        try {
            ServerSocket serverSocket = new ServerSocket(5000);
            Socket socket = serverSocket.accept();
            System.out.println("Connection Established with "+socket.getInetAddress().getHostAddress());
            new FileTransferTestServer(socket).start();
            serverSocket.close();
        } catch (IOException e) {
            //TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public void run(){
        try {
            InputStream is = socket.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String buffer = null;
            String fileName = null;

            if((buffer = br.readLine()) != null){
                fileName = buffer;
            }

            FileOutputStream fos = new FileOutputStream(fileName);
            int res = IOUtils.copy(is, fos);
            System.out.println("res : "+res);
            is.close();
            fos.flush();fos.close();
            br.close();


        } catch (FileNotFoundException e) {
            //TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            //TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

Client-Side Code

public class FileTransferClient {

    public FileTransferClient() {
        //TODO Auto-generated constructor stub
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        //TODO Auto-generated method stub

        try {
            Socket socket = new Socket("172.16.4.23",5000);
            File file = new File("/Users/Guest/Desktop/DQM.txt");
            OutputStream outputStream = socket.getOutputStream();
            PrintWriter out = new PrintWriter(outputStream);
            out.println("file-transfer");
            out.flush();
            out.println(""+file.getName());
            out.flush();
            FileInputStream fis = new FileInputStream(file);
            int res = IOUtils.copy(fis, outputStream);
            out.flush();
            outputStream.flush();
            outputStream.close();
            fis.close();
            System.out.println("res : "+res);
            socket.close();
        } catch (UnknownHostException e) {
            //TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            //TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

Wie man dieses Programm zum übertragen von Dateien zwischen system

Ich habe versucht mit Windows (Server) & Mac OS X(Client) und Windows (Server) & LinuxMint(Client)

Hinweis :
1. Ich möchte zu senden, Datei-Name, gefolgt vom Inhalt der Datei.
2. Datei Inhalte in jeglicher form (Text-oder Binär-Datei)

Schreibe einen Kommentar