Я создаю приложение клиент / сервер Java через TCP, где у нас есть два сокета:
- Один предназначен для обмена сообщениями.
- Два - для передачи файлов.
Я создал на сервере два ServerSockets, чтобы создать Socket One и Two, приняв ServerSockets.
Сначала клиент отправляет несколько байтов через первый Socket
, чтобы сообщить серверу, какой файл ему нужен.
Затем Сервер через второй сокет отправляет файл клиенту.
После того, как клиент получает файл, пытается отправить обратно на сервер сообщение о завершении передачи.
Здесь я получаю исключение для закрытого сокета.
Однако до сих пор я никогда не закрывал розетку.
Я закрываю только буфер, который отправляет файл.
Даже если я попытаюсь снова открыть socketInputStream после отправки файла, ошибка останется прежней.
Также, если я не закрою буфер, который отправляет файл, клиент не получит файл.
Исключение сервера
Ошибка в возвращаемом сообщении - java.net.SocketException: сокет закрыт
Исключение клиента
Ответ сервера - java.net.SocketException: программное обеспечение вызвало прерывание соединения: ошибка записи сокета
Что я делаю неправильно?