Возникли некоторые раздражающие проблемы с сокетами Java, мое приложение, похоже, выходит из строя на самом базовом уровне. Часть моего приложения требует написания имен файлов через TCP-соединение. Код получателя выглядит следующим образом:
ServerSocket serverSocket = new ServerSocket(4445);
Socket socket = serverSocket.accept();
BufferedReader reader = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
String filename = reader.readLine();
Пока мой код отправителя выглядит следующим образом:
Socket socket = new Socket(InetAddress.getLocalHost(), 4445);
PrintWriter writer = new PrintWriter(socket.getOutputStream());
writer.write("Test.jpg");
Очень, очень простые вещи, но по какой-то причине я получаю SocketException: сброс соединения при запуске этого? Это полная трассировка стека:
Exception in thread "main" java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
at java.io.BufferedReader.fill(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at FileReceiver.main(FileReceiver.java:11)
со строкой FileReceiver.java:11, в которой выполняется вызов reader.readLine()
. Я не могу понять, что происходит, так же как базовое использование сокетов TCP всегда работало для меня в прошлом, почему это происходит сейчас?