Отправка файла клиент-клиент без сервера - PullRequest
0 голосов
/ 29 декабря 2018

Я пытаюсь сделать так, чтобы 2 клиента могли отправлять файлы друг другу без необходимости сервера для передачи файлов.Есть ли способ сделать это?

Я пытался создать сокет-соединение между двумя клиентами, но не сработало.

EDIT: добавлен код для отправки

Это для отправки файла:

public void sendFile(File file) {

    Message message = new Message(Message.Action.REQUEST_FILE);
    message.setText(file.getName());
    message.setUsername(model.getUsername());

    try {

        ServerSocket receiver = new ServerSocket(9002);
        byte []buffer = new byte[(int)file.length()];
        OutputStream out = null;
        Socket s = null;

        s = receiver.accept();
        System.out.println("Aceite conneccao de: " + s);
        FileInputStream fis = new FileInputStream(file);
        BufferedInputStream in = new BufferedInputStream(fis);
        in.read(buffer, 0, buffer.length);
        out = s.getOutputStream();
        System.out.println("A enviar o ficheiro!");


        out.write(buffer, 0, buffer.length);
        out.flush();

        out.close();
        in.close();
        s.close();

        System.out.println("Finished Sending");
    } catch (Exception ex) {
        System.exit(0);
    }
}

EDIT_2: добавлен код для получения

public void fileAccepted(String host) { //Host = IP or localhost
    /**
     * Create connection with client and send the file.
     */

    Thread files = new Thread();

    while(!files.isInterrupted()){

        try{
            byte []buffer = new byte[999999999];
            Socket recebe = new Socket(host, 9002);
            InputStream is = recebe.getInputStream();

        }catch(UnknownHostException e){
            System.out.println("Unknown Host" + e);
        }catch(IOException e){
            System.out.println("Error Socket" + e);
        };



    }

}

Iожидайте, что 2 клиента смогут отправлять файлы друг другу без посредничества сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...