Socketexception :Connection reset
I got the below exception .how to resolve this .It’s receiving the data up to 10 min then suddenly below error happening I have embedded the source code below
Kindly help me it’s very urgent
java.net.SocketException: Connection reset at java.net.SocketInputStream.read(Unknown Source) 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 MultiThreadedSocketServer$ClientServiceThread.run( MultiThreadedSocket Server.java:130)
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.text.SimpleDateFormat; import java.util.Calendar;
public class MultiThreadedSocketServer
ServerSocket myServerSocket; boolean ServerOn = true;
public MultiThreadedSocketServer() try myServerSocket = new ServerSocket(5020); > catch(IOException ioe) System.out.println(«Could not create server socket on port 5020. Quitting.»); System.exit(-1); > Calendar now = Calendar.getInstance(); SimpleDateFormat formatter = new SimpleDateFormat(«E yyyy.MM.dd ‘at’ hh:mm:ss a zzz»); System.out.println(«It is now : » + formatter.format(now.getTime()));
// Successfully created Server Socket. Now wait for connections. while(ServerOn) try // Accept incoming connections. Socket clientSocket = myServerSocket.accept();
// accept() will block until a client connects to the server. // If execution reaches this point, then it means that a client // socket has been accepted.
// For each client, we will start a service thread to // service the client requests. This is to demonstrate a // Multi-Threaded server. Starting a thread also lets our // MultiThreadedSocketServer accept multiple connections simultaneously.
// Start a Service thread
ClientServiceThread cliThread = new ClientServiceThread(clientSocket); cliThread.start();
> catch(IOException ioe) System.out.println(«Exception encountered on accept. Ignoring. Stack Trace :»); ioe.printStackTrace(); >
try myServerSocket.close(); System.out.println(«Server Stopped»); > catch(Exception ioe) System.out.println(«Problem stopping server socket»); System.exit(-1); >
public static void main (String[] args) new MultiThreadedSocketServer(); >
class ClientServiceThread extends Thread Socket myClientSocket; boolean m_bRunThread = true;
public ClientServiceThread() super(); >
ClientServiceThread(Socket s) myClientSocket = s;
public void run() // Obtain the input stream and the output stream for the socket // A good practice is to encapsulate them with a BufferedReader // and a PrintWriter as shown below. BufferedReader in = null; PrintWriter out = null;
// Print out details of this connection System.out.println(«Accepted Client Address — » + myClientSocket.getInetAddress().getHostName());
try in = new BufferedReader(new InputStreamReader(myClientSocket.getInputStream()) ); out = new PrintWriter(new OutputStreamWriter(myClientSocket.getOutputStream( )));
// At this point, we can read for input and reply with appropriate output.
// Run in a loop until m_bRunThread is set to false while(m_bRunThread)
Простое клиент-серверное приложение
Чтобы продемонстрировать это исключение, я собираюсь позаимствовать некоторый код из клиент-серверного приложения, которое есть в java.net.ConnectException. Он состоит из 2 потоков.
- Поток 1 — SimpleServer, открывает сокет на локальном компьютере через порт 3333. Потом он ожидает установления соединения. Если происходит соединение, он создает входной поток и считывает 1 текстовую строчку, от клиента, который был подключен.
- Поток номер 2 — SimpleClient, подключается к сокету сервера, открытого SimpleServer. Он отправляет одну текстовую строчку.
Получается, что 2 потока будут в разных классах, запущенных двумя разными основными методами, чтобы вызвать исключение:
Как вы можете видеть, я поместил в SimpleClient 15-секундную задержку, прежде чем попытаться отправить свое сообщение. К тому моменту, когда клиент вызывает sleep(), он уже создал соединение с сервером. Я собираюсь запустить оба потока, и после того, как клиент установит соединение, я внезапно остановлю клиентское приложение. Вот что происходит на стороне сервера:
Мы получаем исключение SocketException с сообщением «Сброс подключения». Это происходит, когда один из участников принудительно закрывает соединение без использования close().
Конечно, вы можете сделать оперативное закрытие соединения, не закрывая приложение вручную. В коде клиента, после ожидания в течение 15 секунд (или меньше), вы можете выдать новое исключение (используя throws new Exception ()), но вы должны удалить finally, иначе соединение будет нормально закрываться, и SocketException не будет сброшен.
9 ответов
-
65 рейтинг
Это вызвано записью в соединение, когда другой конец уже закрыл его.
Итак, у вас плохо определен или реализован протокол приложения.
ответ дан user207421, с репутацией 255862, 22.02.2010
-
23 рейтинг
В нашем случае мы столкнулись с этим при выполнении нагрузочного теста на нашем сервере приложений. Выяснилось, что нам нужно добавить дополнительную память в нашу JVM, потому что она заканчивалась. Это решило проблему.
Попробуйте увеличить объем памяти, доступной для JVM, и / или отслеживать использование памяти при появлении этих ошибок.
ответ дан Dave, с репутацией 247, 15.08.2012
-
4 рейтинг
Все открытые потоки & amp; соединения должны быть правильно закрыты, поэтому в следующий раз, когда мы попытаемся использовать объект urlConnection, он не выдаст ошибку. Как пример, следующее изменение кода исправило ошибку для меня.
До:
После:
ответ дан Murali Mohan, с репутацией 65, 14.09.2012
-
3 рейтинг
SocketException: Сломанный канал, вызван тем, что «другой конец» (клиент или сервер) закрывает соединение, в то время как ваш код читает или пишет в соединение.
Это очень распространенное исключение в клиент-серверных приложениях, которые получают трафик от клиентов или серверов вне контроля приложения. Например, клиент является браузером. Если браузер выполняет Ajax-вызов и / или пользователь просто закрывает страницу или браузер, то это может неожиданно прекратить все коммуникации. По сути, вы увидите эту ошибку каждый раз, когда другой конец завершает свое приложение, и вы не ожидали этого.
Если вы столкнулись с этим исключением в вашем приложении, то это означает, что вы должны проверить свой код, где происходит IO (ввод / вывод), и обернуть его блоком try / catch, чтобы перехватить это IOException. Тогда вы сами решаете, как вы хотите справиться с этой полуактивной ситуацией.
В вашем случае, самое раннее место, где у вас все еще есть контроль, — это вызов . Поэтому убедитесь, что вызов обернут блоком try / catch, и обрабатывайте его так, как считаете нужным.
Я бы настоятельно рекомендовал не регистрировать ошибки, связанные с SocketException-Broken Pipe, на любых уровнях, кроме уровней отладки / трассировки. Иначе, это может использоваться как форма атаки DOS (отказа в обслуживании), заполняя журналы. Попробуйте и подвергните негативному тестированию свое приложение для этого распространенного сценария.
ответ дан AndyGee, с репутацией 41, 12.02.2018
-
1 рейтинг
Я реализовал функцию загрузки данных через FTP-сервер и нашел там то же исключение при возобновлении загрузки. Чтобы устранить это исключение, вам всегда нужно будет отключиться от предыдущего сеанса и создать новый экземпляр клиента и новое соединение с сервером. Этот же подход может быть полезен и для HTTPClient.
ответ дан Naeem Ahmad, с репутацией 27, 18.08.2011
-
1 рейтинг
Причина в том, что удаленный узел закрывает свой сокет (например, сбой), поэтому, если вы попытаетесь записать в него данные, например, вы получите это. чтобы решить эту проблему, вставьте операции чтения / записи в сокет между:
ответ дан elhadi dp ıpɐɥןǝ, с репутацией 2713, 11.08.2017
-
0 рейтинг
Приведенные выше ответы иллюстрируют причину этого : другой конец закрыл соединение. Я хотел бы поделиться опытом, что случилось, когда я столкнулся с этим:
- в запросе клиента заголовок по ошибке установлен больше, чем тело запроса на самом деле (фактически тела вообще не было)
- нижний сервис в сокете tomcat ожидал данные тела такого размера (http — это TCP, который обеспечивает доставку с помощью инкапсуляции и. , , )
- по истечении 60 секунд tomcat выдает исключение тайм-аута:
- клиент получает ответ с кодом состояния 500 из-за исключения тайм-аута.
- Клиент закрывает соединение (потому что получает ответ).
- Кот бросает , потому что клиент закрыл его.
Иногда tomcat не генерирует исключение нарушенного пипса, потому что исключение тайм-аута закрывает соединение, поэтому такая разница меня смущает.
ответ дан Tiina, с репутацией 1095, 2.02.2018
-
-1 рейтинг
Возможно, проблема в том, что ваши развернутые файлы не обновляются с правильными методами RMI. Убедитесь, что ваш интерфейс RMI имеет обновленные параметры или обновленные структуры данных, которых нет у вашего клиента. Или что ваш RMI-клиент не имеет параметров, которые отличаются от версии вашего сервера.
Это просто обоснованное предположение. После повторного развертывания файлов классов моего серверного приложения и повторного тестирования проблема «Сломанной трубы» ушла.
ответ дан JonAar, с репутацией 99, 5.06.2017
-
-1 рейтинг
Вы должны увеличить параметр «backlog» вашего ServerSocket, например,
ответ дан TheSecond, с репутацией 148, 13.11.2015
6 Мучают проблемы со сном
Для депрессии характерны разные проблемы со сном, которые называют бессонницей. Врачи выделяют три вида бессонницы — раннюю, среднюю и позднюю.
При ранней бессоннице не получается сразу уснуть. Если человек постоянно «ворочается» полчаса и дольше, это может быть признаком депрессии.
О средней бессоннице говорят, если человек беспокойно спит, просыпается ночью и потом долго не может уснуть. Единичные пробуждения для похода в туалет не считаются.
Поздняя бессонница — это проснуться намного раньше будильника. Люди с депрессией могут просыпаться в пять-шесть утра с ощущением, что не сомкнули ночью глаз. Сон больше не приходит, и человек начинает день усталым и разбитым.
1 Подавленное настроение длится дольше двух недель
Любой человек может оказаться в плохом, подавленном настроении — встать не с той ноги, сильно расстроиться из-за работы или личной жизни. И так получилось, что в быту плохое настроение на несколько часов или дней могут называть «депрессией». В этом нет ошибки, просто мы так привыкли.
Если плохое настроение длится две недели и дольше, тогда оно может быть частью депрессии как болезни. Такое состояние самостоятельно не пройдет и требует помощи специалистов. Этот критерий можно найти в документе, по которому работают все врачи мира, — МКБ-10 (Международная классификация болезней 10-го пересмотра). МКБ-10 обобщает результаты международных медицинских исследований и рекомендует список критериев, по которому можно поставить диагноз для любого расстройства. Срок в две недели — один из основных признаков клинической депрессии.
Может ли депрессия развиться быстрее? Конечно, если у человека есть другие выраженные симптомы (склонность к суициду, отказ от еды, навязчивые мысли о собственной греховности), врач не будет ждать две недели, чтобы подтвердить диагноз и начать лечение. При серьезных симптомах врач обязан срочно спасать человека, и диагноз, на самом деле, не очень важен.
Настроение при депрессии скорее подавленное, чем грустное. Человек замедляется, становится менее энергичным и не может найти в себе силы работать и развлекаться. Он может грустить и чаще плакать, но подавленность и опустошение — это более частый симптом.
3 Становится тяжело работать и держать концентрацию, быстро наступает утомление
С одной стороны, пропадает мотивация и интерес. С другой стороны, двигаться и думать становится еще и физически тяжело.
Человек в депрессии долго думает, затрудняется принять решение, ему нужно больше времени, чтобы что-то вспомнить или понять. Разговаривать тяжело, и речь постоянно прерывается длинными паузами.
При депрессии необязательно проводить конференции или разгружать грузовики, чтобы почувствовать себя усталым и разбитым. Сильная усталость наступает от обычной деятельности — поработать за компьютером несколько часов, убраться в доме. После минимальной нагрузки руки и ноги наливаются свинцом, мышцы болят, голова раскалывается. Приходится делать перерывы на отдых, хотя раньше можно было спокойно «пахать» сутками.
7 Регулярно болит сердце, голова, живот
У некоторых людей на первый план выходит психосоматика
Это значит, что плохое настроение или депрессия, тревога, стресс нарушают работу внутренних органов, и человек в первую очередь обращает внимание на проблемы с физическим здоровьем. Свое настроение при этом он может оценивать как «нормальное»
Как отличить психосоматические нарушения от гастрита или проблем с сердцем? Во-первых, при психосоматике результаты анализов и инструментальных исследований в пределах нормы; терапевт (гастроэнтеролог, невролог, эндокринолог) не находит нарушений. Во-вторых, симптомы появляются или усиливаются после стресса. И, наконец, настоящее облегчение наступает, только когда человек начинает лечение как для депрессии — снижает уровень стресса с помощью медикаментов (антидепрессантов) и психотерапии. Обезболивающие и другие препараты дают кратковременный эффект.
Сколько внутренних органов и систем — столько может быть и нарушений:
Пищеварение и выделение: сухость во рту, метеоризм, несварение желудка, запоры, диарея, желудочный спазм, отрыжка, частое мочеиспускание.
Сердце: учащенное сердцебиение, боль в груди.
Дыхание: учащенное дыхание, нехватка воздуха, затруднение дыхания (диспноэ).
Нервная и эндокринная система: головная боль, звон в ушах (тиннитус), нечеткость зрения, тремор (дрожь в конечностях), попеременное ощущение жара и холода, потливость.
Психосоматика считается проблемой, если доставляет регулярный дискомфорт. Одно дело, когда голова или живот болит редко — перед очень важным экзаменом или встречей. Другое дело, когда это случается несколько раз в день от малейшего раздражителя.
java.net.SocketException: Connection reset
This SocketException occurs on the server side when the client closed the socket connection before the response could be returned over the socket. For example, by quitting the browser before the reponse was retrieved.
Connection reset simply means that a TCP RST was received. TCP RST packet is that the remote side telling you the connection on which the previous TCP packet is sent is not recognized, maybe the connection has closed, maybe the port is not open, and something like these. A reset packet is simply one with no payload and with the RST bit set in the TCP header flags.
The following are possible causes for the error:
- More commonly, it is caused by writing to a connection that the other end has already closed normally. In other words an application protocol error.
A Reset (RST) packet is received from a remote machine and interrupts the established connection. The sent RST packets may indicate that the TCP packets sent are not recognized, a connection between the local and remote machine is broken, or a particular port is closed and is not allowing for communication.
The TCP (Transmission Control Protocol) socket is closed because the socket received a close command from a remote machine.
The other end has deliberately reset the connection. It is rarely happens, and generally incorrect, for application software to do this, but it is not unknown for commercial software.
In Windows, ‘software caused connection abort’, which is not the same as ‘connection reset’, is caused by network problems sending from your end.
It can also be caused by closing a socket when there is unread data in the socket receive buffer.
In some cases, an intervening firewall or even the remote host itself might «forget» about your TCP connection. This could happen if you don’t send any data for a long time (120 minutes is a common time-out), or because the peer was rebooted and lost its information about active connections. Sending data on one of these defunct connections will cause a RST too.
Sometimes this can also be due to heavy load causing Server to queue the message and before it can read the message is got timed out at the client end. So you can also check server health and log for excessive load causing this error.
Что вызывает мое java. net. SocketException: сброс соединения?
мы видим часто java.net.SocketException: Connection reset ошибки в наших журналах для компонента, который вызывает стороннюю веб-службу, которая отправляет SMS-сообщения.
наше приложение написано на Java и работает на базе Tomcat 5.5. Его написали подрядчики, которых у нас больше нет. Текущая команда не имеет реального опыта Java, и мы не уверены, где Connection reset ошибка на самом деле и откуда, и как идти об отладке.
проблема кажется полностью прерывистой, и не связаны с сообщениями, которые мы пытаемся отправить.
любые предложения о том, что типичные причины этого исключения могут быть, и как мы могли бы продолжить, приветствуются.
весь стек вызовов включен ниже для полноты.
( com.companyname.mtix.sms это наша составляющая)
строка нашего кода, из которой выбрасывается исключение, является последней строкой в приведенном ниже фрагменте кода.
Что делать, если не работает Wink на телевизоре?
Если Wink не работает на Smart TV, первым делом убедитесь, что опция была правильно подключена. Верный алгоритм подключения выглядит следующим образом:
- Пользователь прошёл этап регистрации.
- Клиент оплатил пакет либо ввёл ранее полученный промокод для использования услуги.
Если программа по-прежнему не запускается и на телевизоре отображается чёрный экран, выполните такие действия:
- перезапустите свой ТВ;
- переустановите само приложение;
- переустановить сервис;
- смените точку доступа к интернету;
- измените адрес DNS-сервера;
- сбросьте настройки Smart Hub, сделав их “по умолчанию”;
- сбросьте настройки телевизора.
Подробнее обо всех этих способах восстановления функционирования приложения Wink читайте ниже. Они не сложные и не требуют дополнительных технических навыков.
Перезагрузка телевизора
Это классический способ исправления неисправностей, к которому прибегают в числе первых. В 70% случаев данной манипуляции достаточно, чтобы привести всё в норму.
Если платформа внезапно перестала функционировать, перезапустите телевизор и отключите устройство от розетки на 3-5 минут. Затем подключите его к питанию снова и попробуйте запустить Wink. Всё должно заработать. Если проблема осталась нерешённой, переходите к следующим шагам.
Переустановка приложения
Если перезапуск телевизора не помог, попробуйте переустановить на нём приложение Wink.
Чтобы точно узнать модель и год выпуска своего устройства, воспользуйтесь одним из следующих способов:
Убедившись, что ТВ-приёмник в принципе поддерживает данную программу, переустановите её, следуя инструкции:
- Наведите курсор на пункт «APPS» на панели Smart и нажмите кнопку в центре пульта дистанционного управления, чтобы открыть службу.
- Выберите приложение Wink из открывшегося перечня программ. Для этого наведите на него курсор и зажмите центральную кнопку пульта, пока не появится дополнительное меню.
- В открывшемся меню кликните на пункт «Повторная установка». Далее приложение заново установится без вашего участия.
Если всё сделано правильно, приложение успешно переустанавливается. Время установки зависит от скорости подключённого к ТВ-приёмнику интернета.
Смена точки доступа
Чтобы восстановить работоспособность приложения, смените точку доступа. Лучший способ решить эту проблему – создать точку на устройстве и подключиться к ней. Если после выполнения таких операций функция работает нормально, значит, проблема заключается в интернет-провайдере.
Смена адреса DNS-сервера
Если проблемы с провайдером обнаружены не были, проверьте DNS-сервер. Делается это следующим образом:
- Откройте главное меню настроек TB-приёмника.
- Выполните переход в раздел «Общие».
- Перейдите в пункт «Сеть» и «Состояние сети». Проверьте здесь факт подключения TB к сети Интернет.
- Выберите раздел «Настройки IP».
- Перейдите в пункт «Настройки DNS» и активируйте в нём функцию «Ввести вручную».
- Введите “8.8.8.8” в поле «Сервис DNS». Если комбинация не подходит, попробуйте ввести такую – “208.67.222.222”.
- Кликните «Готово» и вернитесь в главное меню.
- Нажмите «Сохранить изменения».
После проделанных манипуляций убедитесь в наличии интернета на ТВ, перезапустите телевизор и попробуйте снова включить приложение Wink.
Сброс Smart Hub
Сбросив настройки Smart Hub, вы обнулите все установленные ранее параметры программы и удалите установленные на ТВ приложения. Алгоритм действий при сбросе настроек Smart Hub:
- Зайдите в главное меню TB-приёмника и перейдите в раздел «Поддержка».
- Выберите пункт «Самодиагностика», а в нём – «Сброс Smart Hub».
- Укажите запрашиваемый системой ПИН-код (если он не менялся пользователем, скорее всего подойдёт комбинация “0000”).
- Подождите несколько минут, пока система обработает информацию и сбросит настройки.
- Вернитесь обратно в «Главное меню».
- Поставьте галочку, обозначающую согласие с установленными условиями.
- Войдите в свою учётную запись.
- Выберите Wink в списке приложений, проведите его установку.
- Запустите установленное приложение.
Прежде чем принимать такие радикальные меры, убедитесь, что телевизор сертифицирован в Российской Федерации. Если вы сбросите настройки на телевизоре без сертификата, можете полностью заблокировать устройство.
Сброс телевизора
Самый радикальный шаг, переходят к которому в крайнем случае – если все остальные способы не дали результатов, и только если вы абсолютно уверены, что ваше TB-устройство обязано поддерживать приложение Wink.
Как сбросить настройки:
- Через главное меню выйдите в “Общие” настройки.
- Кликните “Сброс настроек до заводских”.
- Согласитесь с тем, что все настройки будут сброшены, нажав “Да”.
- Дождитесь окончания сброса и повторите попытку установить приложение.
Как мы принимаем решения
Американский психолог и профессор Джой Пол Гилфорд создал концепцию многомерного интеллекта — модель мышления, основанную на базе конкретных математических измерений, которые он проводил. Гилфорд предложил решать проблемы, чередуя «дивергентное» (расходящееся) и «конвергентное» (сходящееся) мышление. То есть, сосредотачиваться на целях, которые помогают решать проблему на данном этапе: создавать варианты выбора или этот выбор делать.
Именно эта концепция, визуально показанная в виде «двойного алмаза», плотно укоренилась в подходах к управлению инновационными процессами и дизайн-мышлении.
Визуально концепция чередования «режимов мышления» Гилфорда может быть изображена как ромб. Она наглядно показывает, как эффективно решать проблемы
Теперь мы можем дать определения:
Решение проблем — это последовательный творческо-аналитический процесс. Мы анализируем ситуацию, ищем причины проблемы, формулируем ее и придумываем варианты решения.
Принятие решений — выбор, который мы делаем в процессе, что-то предпочитая и от чего-то отказываясь на каждом из ключевых этапов. Мы выбираем факторы, которые будем считать значимыми, а какие — нет, расставляем приоритеты, строим планы.
Получается, что принятие решений — это часть решения сложных проблем. Чем лучше мы определяем и решаем проблемы, выбираем и принимаем решения, тем успешнее сможем справляться с изменениями. Например, разрабатывать новые продукты, проводить стратегические сессии и управлять инновациями.
Как решить проблему с SocketException
SocketException — это общее исключение, обозначающее проблему при попытке доступа или открытия Socket. Решение этой проблемы должно быть сделано с особой тщательностью. Вы должны всегда регистрировать сообщение об ошибке, которое сопровождает исключение.
В предыдущем примере мы видели код сообщения. Это происходит, когда один из участников принудительно закрывает соединение без использования close (). Это означает, что вы должны проверить, был ли один из участников неожиданно прерван.
Также может быть сообщение «Слишком много открытых файлов», особенно если вы работаете в Linux. Это сообщение обозначает, что многие файловые дескрипторы открыты для системы. Вы можете избежать этой ошибки, если перейдете в /etc/sysctl.conf и увеличите число в поле fs.file-max. Или попытаться выделить больше стековой памяти.
Конечно, можно встретить много других сообщений. Например, «Ошибка привязки», где ваше соединение не может быть установлено, поскольку порт не может быть привязан к сокету. В этом случае проверьте, используется ли порт и т. д. Если у вас проблема с minecraft, то в видео ниже очень просто объясняется как это решить.
Средняя оценка / 5. Количество голосов:
Спасибо, помогите другим — напишите комментарий, добавьте информации к статье.
Или поделись статьей
Видим, что вы не нашли ответ на свой вопрос.
Виды речевых ошибок
Сначала разберёмся с тем, что такое речевые ошибки. Речевые ошибки – это любые случаи отклонения от действующих языковых норм. Без их знания человек может нормально жить, работать и настраивать коммуникацию с другими. Но вот эффективность совершаемых действий в определённых случаях может страдать. В связи с этим возникает риск быть недопонятым или понятым превратно. А в ситуациях, когда от этого зависит наш личный успех, подобное недопустимо.
Автором приведённой ниже классификации речевых ошибок является доктор филологических наук Ю. В. Фоменко. Его деление, по нашему мнению, наиболее простое, лишённое академической вычурности и, как следствие, понятное даже тем, кто не имеет специального образования.
Виды речевых ошибок: