Я получаю следующую ошибку, пытающуюся прочитать из сокета. Я делаю readInt() в этом InputStream , и я получаю эту ошибку. Прослушивание документации показывает, что клиентская часть соединения закрыла соединение. В этом случае я сервер.

У меня есть доступ к файлам журнала клиента, и он не закрывает соединение, и на самом деле его файлы журнала предполагают, что я закрываю соединение. Так кто-нибудь есть идея, почему это происходит? Что еще проверить? Это происходит, когда есть локальные ресурсы, которые, возможно, достигают пороговых значений?

Я отмечаю, что у меня есть следующая строка:

socket.setSoTimeout(10000);

непосредственно перед readInt() . Есть причина для этого (длинный рассказ), но просто любопытно, существуют ли обстоятельства, при которых это может привести к указанной ошибке? У меня есть сервер, работающий в моей среде IDE, и мне пришлось оставить свою среду IDE на точке останова, и я заметил, что те же самые ошибки появляются в моих собственных журналах в моей среде IDE.

Не могу зайти на сервер | internal exception java net socketexception | Фикс ошибки 2022

В любом случае, просто упомянув об этом, надеюсь, не красная сельдь.: — (

ОТВЕТЫ

Ответ 1

Существует несколько возможных причин.

  • На другом конце умышленно reset соединение, таким образом, что я не буду документировать здесь. Редко и, как правило, неверно, для прикладного программного обеспечения это делать, но это не известно для коммерческого программного обеспечения.
  • Чаще всего это вызвано записью на соединение, что другой конец уже закрыт нормально. Другими словами, ошибка протокола приложения.
  • Это также может быть вызвано закрытием сокета, когда в буфере приема сокета есть непрочитанные данные.
  • В Windows «программное обеспечение вызвало прерывание соединения», которое не совпадает с «соединением reset», вызвано сбоем сетевых проблем с вашего конца. Здесь есть статья базы знаний Microsoft.

Ответ 2

Соединение reset просто означает, что был получен TCP RST. Это происходит, когда ваш партнер получает данные, которые он не может обработать, и для этого могут быть разные причины.

Простейшим является закрытие сокета, а затем запись большего количества данных в выходной поток. Закрыв сокет, вы сказали своему коллеге, что вы закончили говорить, и он может забыть о вашем соединении. Когда вы все равно отправляете больше данных об этом потоке, эксперт отвергает его с помощью RST, чтобы вы знали, что он не прослушивает.

В других случаях промежуточный брандмауэр или даже сам удаленный хост могут «забыть» о вашем TCP-соединении. Это может произойти, если вы не отправляете какие-либо данные в течение длительного времени (2 часа — общий тайм-аут), или потому, что сверстник перезагружен и потерял информацию об активных соединениях. Отправка данных по одному из этих несовместимых соединений вызовет также RST.

Обновление в ответ на дополнительную информацию:

Посмотрите внимательно на обработку SocketTimeoutException . Это исключение возникает, если превышен установленный тайм-аут при блокировке операции сокета. Состояние самого сокета не изменяется при вызове этого исключения, но если ваш обработчик исключений закрывает сокет, а затем пытается его записать, вы будете в состоянии соединения reset. setSoTimeout() призван дать вам чистый способ выйти из операции read() , которая в противном случае могла бы блокироваться навсегда, без каких-либо грязных действий, таких как закрытие сокета из другого потока.

Читайте также:  Увеличение уровня сложности Майнкрафт

Не могу зайти на сервер | Ошибка internal exception java.io.IOException | Фикс 2022 | java.net 1.19

Ответ 3

Всякий раз, когда у меня были такие странные проблемы, я обычно сажусь с помощью инструмента WireShark и смотрю на переданные необработанные данные назад и вперед. Вы можете быть удивлены, когда что-то отключается, и вы только уведомляетесь, когда пытаетесь прочитать.

Ответ 4

Смутившись сказать это, но когда у меня возникла эта проблема, было просто ошибкой, что я закрывал соединение, прежде чем я прочитал все данные. В случаях, когда возвращались маленькие строки, это сработало, но, вероятно, из-за того, что весь ответ был буферизирован, я не закрыл его.

В случае большего количества возвращаемого текста исключение было выбрано, так как больше возвращался буфер.

Вы можете проверить этот контроль. Помните, что открытие URL-адреса похоже на файл, обязательно закройте его (отпустите соединение) после его полного чтения.

Ответ 5

Вы должны тщательно осмотреть весь след,

У меня есть приложение для подключения к серверу и исправлено событие java.net.SocketException: Connection reset .

В моем случае это происходит при чтении с объекта clientSocket Socket , который по какой-то причине закрывает его соединение. (Потеря сети, брандмауэр или сбой приложения или предполагаемое закрытие)

На самом деле я восстанавливал соединение, когда получал ошибку при чтении с этого объекта Socket.

Socket clientSocket = ServerSocket.accept(); is = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); int readed = is.read(); // WHERE ERROR STARTS .

Интересно, что for my JAVA Socket , если клиент подключается к моему ServerSocket и закрывает его соединение, не отправляя ничего is.read() вызывает себя рекурсивно. Кажется, из-за того, что в бесконечном цикле для чтения из этого сокета вы пытаетесь для чтения из закрытого соединения. Если вы используете что-то вроде операции чтения,

while(true)

Затем вы получаете stackTrace, как показано ниже, и

java.net.SocketException: Socket is closed at java.net.ServerSocket.accept(ServerSocket.java:494)

То, что я сделал, — это просто закрыть ServerSocket и обновить мое соединение и ждать дальнейших входящих клиентских подключений.

String Receive() throws Exception < try < int readed = is.read(); . >catch(Exception e) < tryReConnect(); logit(); //etc >//. >

Это восстанавливает мое соединение для неизвестного потерянного сокета клиента

private void tryReConnect() < try < ServerSocket.close(); //empty my old lost connection and let it get by garbage col. immediately clientSocket=null; System.gc(); //Wait a new client Socket connection and address this to my local variable clientSocket= ServerSocket.accept(); // Waiting for another Connection System.out.println(«Connection established. «); >catch (Exception e) < String message=»ReConnect not successful «+e.getMessage(); logit();//etc. >>

Читайте также:  Как вызвать в Майнкрафт бога

Я не мог найти другого способа, потому что, как вы видите ниже, вы не можете понять, потеряно ли соединение или нет без try and catch , потому что все кажется правильным. Я получил этот снимок, пока я непрерывно получал Connection reset .

введите описание изображения здесь

Ответ 6

У меня была такая же ошибка. Я нашел решение проблемы сейчас. Проблема заключалась в том, что клиентская программа заканчивалась до того, как сервер прочитал потоки.

Ответ 7

У меня была эта проблема с системой SOA, написанной на Java. Я работал как с клиентом, так и с сервером на разных физических машинах, и они отлично работали в течение длительного времени, затем эти неприятные сбрасывания соединений появились в журнале клиентов, и в журнале сервера не было ничего странного. Перезапуск клиента и сервера не помогло решить проблему. Наконец, мы обнаружили, что куча на стороне сервера была довольно полной, поэтому мы увеличили доступную память для JVM: проблема решена! Обратите внимание, что в журнале не было OutOfMemoryError: память была просто скудной, а не исчерпанной.

Ответ 8

У меня также была эта проблема с программой Java, пытающейся отправить команду на сервер через SSH. Проблема заключалась в том, что машина выполнила код Java. У него не было разрешения на подключение к удаленному серверу. Метод write() выполнял все в порядке, но метод read() выбрал java.net.SocketException: Connection reset. Я исправил эту проблему, добавив ключ SSH клиента к известным ключам удаленного сервера.

Ответ 9

Проверьте версию вашего сервера Java. Произошло со мной, потому что мой Weblogic 10.3.6 был на JDK 1.7.0_75, который был на TLSv1. Остальной конечной точкой, которую я пытался использовать, было отключение чего-либо ниже TLSv1.2.

По умолчанию Weblogic пытался согласовать самый сильный общий протокол. Подробнее см. здесь: Проблемы с настройкой системного свойства https.protocols для подключений HTTPS.

Я добавил подробное протоколирование SSL, чтобы определить поддерживаемый TLS. Это указывало на то, что TLSv1 использовался для рукопожатия.
-Djavax.net.debug=ssl:handshake:verbose:keymanager:trustmanager -Djava.security.debug=access:stack

Я решил эту проблему, добавив эту функцию в наш JDK8-совместимый продукт, по умолчанию JDK8 — TLSv1.2. Для тех, кто ограничен JDK7, я также успешно протестировал обходной путь для Java 7 путем обновления до TLSv1.2. Я использовал этот ответ: Как включить TLS 1.2 в Java 7

Источник: utyatnishna.ru

internal exception: java.net.socketexception: connection res

Фотография

  • Пользователи
  • Сообщений: 2
  • Написал 12.04.2011 — 17:58

    Здравствуйте.Захотелось нам однажды с друзьями поиграь в майнкрафт вместе,по сети. Ну создал человек один сервер,создали комнатку в хамачи,запустили,все начали играть. Решил и я к ним пресоединиться. После захода на серв действия разворачиваються так: 1.Появляюсь и начинаю падать кудато далеко и долго вниз.

    2.Появляюсь на осторовке где-то с минуту побегаю и выкидывает с сервера с такой ошибкой — internal exception: java.net.socketexception: connection reset. Возможно вам уже задавали такой вопрос. Надеюсь вы знаете решение.

    Читайте также:  Ошибка при установке forge minecraft

    #2 alex55

  • Пользователи
  • Сообщений: 42
  • Написал 12.04.2011 — 19:28

    Do this:Click the followingStart Button -> Control Panel -> Hardware and Sound -> Device Manager -> Network AdaptersRight Click the Atheros Card -> Properties -> AdvancedSelect Transmit Buffers, and change the value from 256 to 512.***Select Each of the things with «Checksum Offload» and disable them.Click OkayRun Minecraft

    #3 sn3jkeee

  • Пользователи
  • Сообщений: 2
  • Написал 12.04.2011 — 19:43

    Я смотрел офф форум. Мне не помогло.

    #4 АНТОН2002543

    АНТОН2002543

  • Пользователи
  • Сообщений: 1
  • Написал 15.11.2013 — 14:43

    Количество пользователей, читающих эту тему: 0

    0 пользователей, 0 гостей, 0 анонимных

    Ответить цитируемым сообщениям Очистить

    1. Minecrafting.ru
    2. → Обсуждение игры
    3. → Технические проблемы

    • RSS поток
    • Русский (RU)
    • English (USA)
    • Русский (RU)
  • Помощь
  • Источник: minecrafting.ru

    Что вызывает мое java. net. SocketException: сброс соединения?

    мы видим часто java.net.SocketException: Connection reset ошибки в наших журналах для компонента, который вызывает стороннюю веб-службу, которая отправляет SMS-сообщения.

    наше приложение написано на Java и работает на базе Tomcat 5.5. Его написали подрядчики, которых у нас больше нет. Текущая команда не имеет реального опыта Java, и мы не уверены, где Connection reset ошибка на самом деле и откуда, и как идти об отладке.

    проблема кажется полностью прерывистой, и не связаны с сообщениями, которые мы пытаемся отправить.

    любые предложения о том, что типичные причины этого исключения могут быть, и как мы могли бы продолжить, приветствуются.

    весь стек вызовов включен ниже для полноты.

    ( com.companyname.mtix.sms это наша составляющая)

    java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:168)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:235)
    at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:77)
    at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:105)
    at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1115)
    at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1832)
    at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1590)
    at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:995)
    at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:397)
    at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324)
    at com.companyname.mtix.sms.services.impl.message.SendTextMessage.sendTextMessage(SendTextMessage.java:127)
    at com.companyname.mtix.sms.services.MessageServiceImpl.sendTextMessage(MessageServiceImpl.java:125)
    at com.companyname.mtix.sms.services.remote.MessageServiceRemoteImpl.sendTextMessage(MessageServiceRemoteImpl.java:43)
    at sun.reflect.GeneratedMethodAccessor203.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
    at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
    at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
    at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
    at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
    at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
    at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453)
    at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
    at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at com.companyname.mtix.sms.http.filters.NoCacheFilter.doFilter(NoCacheFilter.java:63)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at com.companyname.mtix.sms.http.filters.MessageFilter.doFilter(MessageFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:61)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.ajaxanywhere.AAFilter.doFilter(AAFilter.java:46)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)

    Edit

    строка нашего кода, из которой выбрасывается исключение, является последней строкой в приведенном ниже фрагменте кода.

    String aggregatorResponse = null;
    HttpClient httpClient = prepareHttpClient( username, password );
    PostMethod postMethod = preparePostMethod( textUrl );

    try SybaseTextMessageBuilder builder = new SybaseTextMessageBuilder();
    URL notifyUrl = buildNotificationUrl( textMessage, codeSetManager );
    String smsRequestDocument = builder.buildTextMessage( textMessage, notifyUrl );
    LOG.debug( «Sybase MT document created as: n» + smsRequestDocument );

    postMethod.setRequestEntity( new StringRequestEntity( smsRequestDocument ) );
    LOG.debug( «commiting SMS to aggregator: » + textMessage.toString() );
    int httpStatus = httpClient.executeMethod( postMethod );

    Источник: codengineering.net