Я пытаюсь сделать так, чтобы 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 клиента смогут отправлять файлы друг другу без посредничества сервера.