Я думаю, вам нужно просто скопировать InputStream в OutputStream. Я бы начал с использования чужой реализации commons-io: IOUtils.copyLarge (InputStream, OutputStream)
InputStream is = null;
OutputStream os = null;
try{
InputStream is = new FileInputStream("yourfile.bin");
OutputStream os = remoteSocket.getOutputStream();
IOUtils.copyLarge(is,os);
}finally{
IOUtils.closeQuietly(is);
IOUtils.closeQuietly(out);
}
Это должно быть хорошим стартером для десяти. Если вам требуется более высокая пропускная способность, вы можете начать размещать действия чтения и записи в отдельных потоках, это теоретически должно обеспечить полное насыщение самой медленной из ссылок, но может быть лучше использовать метод FileChannel # TransferTo, если использовать традиционные вещи просто недостаточно.