2016-05-02 3 views
0

Я пытаюсь выполнить простую программу Client/Server. Но всякий раз, когда я пытаюсь выполнить, я получаю «java.net.SocketException: Connection reset». почему это исключение происходит? Любое предложение для меня?Получение java.net.SocketException: Сброс соединения

Вот код

SocServer.java

public static void main(String[] args) throws Exception 
{ 
    System.out.println("Server is started"); 

    ServerSocket ss = new ServerSocket(8886); 

    System.out.println("Server is waiting for client request"); 

    Socket s = ss.accept(); 

    System.out.println("Client Connected"); 

    BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); 

    String str = br.readLine(); 

    System.out.println("Client Data" + str); 

}

SocketClient.java

public static void main(String[] args) throws Exception 
{ 
    String ip = "localhost"; 
    int port = 8886; 
    Socket s = new Socket(ip,port); 

    String str = "Noman"; 

    OutputStreamWriter os = new OutputStreamWriter(s.getOutputStream()); 
    PrintWriter out = new PrintWriter(os); 

    os.write(str); 
    os.flush(); 
} 
+0

2 вещи: 1) вы считаете, что все данные присутствуют и учитываются в 'readLine' в 1SocServer.java' и 2) вы никогда не закрываете ни один из потоков. Проверьте это: http://stackoverflow.com/questions/62929/java-net-socketexception-connection-reset?rq=1 –

+0

Вы не отправляете новую строку, а слушатель ожидает разблокирования. Вне полностью неиспользуемого PrintWriter (я препятствую использовать его ... лучше явно отправлять новые строки, как и ожидалось). Для начала попробуйте 'String str =" Noman \ n "' – Fildor

ответ

0

Возможные причины

  • Другой конец намеренно перезапустил соединение, таким образом, что I не будет документировать здесь. Это редко, и вообще говоря, неверно, для прикладного программного обеспечения, чтобы сделать это, но это не является неизвестным для коммерческого программного обеспечения

.

  • Как правило, это связано с записью на соединение, которое конец уже закрыт нормально. Другими словами, ошибка протокола .
  • Это также может быть вызвано закрытием сокета, когда в буфере приема сокета есть непрочитанные данные .
  • В Windows «программное обеспечение вызвало прерывание соединения», которое не совпадает с как «сброс соединения», вызвано сетевыми проблемами при отправке с вашего конца. Об этом есть статья базы знаний Microsoft.
Смежные вопросы