michalwiacek
3/20/2019 - 11:37 PM

FileClient.java

package com.company;

import java.io.*;
import java.net.*;

public class FileClient{

    public static void main(String[] args){
        try(
                Socket socket = new Socket("localhost", 8000);//Nawiızywanie po³ıczenia z serwerem
                InputStream is = socket.getInputStream();//pobieranie strumienia bajtowego WE
                FileOutputStream fos = new FileOutputStream(new File("clientFile.dat"));//strumieñ plikowy WY pracujıcy na bajtach
                ObjectInputStream ois = new ObjectInputStream(is)
        ){
            System.out.println("Connected to server...");
            System.out.println("File is downloading...");
                    Message msg = (Message) ois.readObject();
                    System.out.println(msg.toString());
                    fos.write(msg.getContent(),0, msg.getLenght());
                    fos.close();
            System.out.println("File downloaded");
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}
package com.company;

import java.io.*;
import java.net.*;
import java.util.Date;

public class FileServer{

    public static void main(String[] args){
        try{
            File file = new File("serverFile.dat");
            if(file.exists()){
                ServerSocket server = new ServerSocket(8000); // uruchamianie gniazda serwera
                System.out.println("Server run...");
                while(true){
                    try(
                            Socket socket = server.accept();// akceptacja po³ıczenia z klientem
                            OutputStream os = socket.getOutputStream();//pobieranie bajtowego strumienia WY
                            FileInputStream fis = new FileInputStream(file);//Tworzenie strumienia bajtowego WE	do pliku
                            BufferedInputStream bis = new BufferedInputStream(fis);//buforowanie strumienia bajtów
                            ObjectOutputStream oos = new ObjectOutputStream(os)

                    ){
                        System.out.println("Client accepted...");
                        int k = 0;
                        byte[] data = new byte[512];//tablica (paczka) na dane
                        System.out.println("File is sending ");
                        while((k=bis.read(data))!=-1)//buforowany odczyt danych ze strumienia WE(pliku)
                        {
                            Message msg = new Message(data, new Date(), k);
                            oos.writeObject(msg);
                            oos.close();
                        }
                        oos.writeObject(null);
                        System.out.println("File has been sent");
                    }
                    System.out.println("Client disconnected ");
                }
            }else{
                System.err.println(String.format("File '%s' doesn't exist in the main server directory...", file.getAbsolutePath()));
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}
package com.company;

import java.io.Serializable;
import java.util.Arrays;
import java.util.Date;

public class Message implements Serializable {
    private static final long serialVersionUID = 6529685098267757690L;

    byte[] content;
    Date date;
    int lenght;


    public byte[] getContent() {
        return content;
    }

    public void setContent(byte[] content) {
        this.content = content;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public int getLenght() {
        return lenght;
    }

    public void setLenght(int lenght) {
        this.lenght = lenght;
    }

    public Message(byte[] content, Date date, int lenght) {
        this.content = content;
        this.date = date;
        this.lenght = lenght;
    }

    @Override
    public String toString() {
        return "Message{" +
                "content=" + Arrays.toString(content) +
                ", date=" + date +
                ", lenght=" + lenght +
                '}';
    }
}