ClosedChannelException при использовании AsynchronousSocketChannel в Java Android - PullRequest
0 голосов
/ 04 августа 2020

У меня есть приложение для передачи файлов, которое отправляет большие файлы (размером несколько ГБ) от 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);
...