У меня есть очень простой многопоточный сервер, который просто распечатывает вход клиента. Проблема, с которой я сталкиваюсь, заключается в том, что клиент рушится после более чем одного использования outToServer.writeBytes()
.Java - сбой программы после многократного использования writeBytes
Мой исходный код для клиента здесь:
public class Client {
public void run() throws Exception{
String sentence;
Socket clientSocket = new Socket("localhost", 25565);
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
while (true){
sentence = inFromUser.readLine();
if(!sentence.equalsIgnoreCase("exit")){
outToServer.writeBytes(sentence + '\n');
} else {
break;
}
}
clientSocket.close();
}
}
Я сделал некоторые исследования по ошибке, и это может быть мой колледж сеть убивает связь, но это не имеет особого смысла, учитывая, что он позволяет использовать первое соединение.
Кроме того, здесь ошибка:
java.net.SocketException: Software caused connection abort: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
at java.net.SocketOutputStream.write(Unknown Source)
at java.io.DataOutputStream.writeBytes(Unknown Source)
at com.cs.Client.run(Client.java:21)
at com.cs.Main.main(Main.java:14)
В строке 21 в Client.java является линия с writeBytes
в нем
Какое исключение? –
Пожалуйста, отправьте исключение. Если он не пойман и, по крайней мере, зарегистрирован, это настоящая проблема. Скорее всего, это говорит вам (почти), в точности, что пошло не так. Кроме того, это новичка (но очень распространенная), предполагающая, что сетевое соединение доступно после его получения до тех пор, пока вы этого хотите. Это не так, поэтому, если вы хотите действительно иметь надежную программу, не решайте свои проблемы так, как если бы это было так. –
Упс. Я знал, что кое-что забыл. Я добавлю исключение сейчас – JamEngulfer