У меня есть приложение для передачи файлов, которое отправляет большие файлы (размером несколько ГБ) от Android до Windows через соединение через сокет. Я пытаюсь оптимизировать время передачи с помощью AsynchronousSocketChannel, но как только я открываю канал, я получаю ClosedSocketException. Когда я открываю канал сокета, два устройства уже подключены и имеют друг друга IP-адрес и информацию о порте. Что я делаю не так?
AsynchronousSocketChannel asc = AsynchronousSocketChannel.open();
InetSocketAddress addr = new InetSocketAddress(String.valueOf(hostName), INITIAL_DEFAULT_PORT);
Future<Void> conn = asc.connect(addr);
//check if connected to server
while(!conn.isDone()) {
//do something
//or sleep
Thread.sleep(20);
}
String request = "Hello";
byte reqb[] = request.getBytes();
ByteBuffer bb = ByteBuffer.allocate(reqb.length);
bb.put(request.getBytes());
bb.rewind();
Future<Integer> writeFuture = asc.write(bb);
int count = writeFuture.get(30, TimeUnit.MILLISECONDS);
System.out.println("byte sent to server "+count);