Можно ли держать розетки открытыми бесконечное время

Я новичок в сетевом программировании. Меня интересует, возможно ли установить сетевое соединение через сокеты между Java-сервером и C-клиентом и поддерживать соединение бесконечно открытым? Я хочу оставить соединение открытым для обмена данными XML между клиентами.

 Andrew Thompson13 июн. 2012 г., 17:55
"keep the connection open infinitely?" К сожалению нет. Всего через несколько сотен миллионов лет Земля испарится.
 kevin62813 июн. 2012 г., 17:56
Может быть, вы имеете в виду «постоянный» вместо "бесконечный"? & Quot; Бесконечный & Quot; выявляет циничную сторону в Stackoverflow. :П
 Eric J.13 июн. 2012 г., 17:55
Нет, в конце концов юниверс закончится :-) С практической точки зрения, через некоторое время соединение может оборваться и его придется восстановить из-за проблем с сетью.
 keyser13 июн. 2012 г., 17:57
@ kevin628 в любом случае, это странный вопрос.

Ответы на вопрос(3)

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

Решение Вопроса

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

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

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

 13 июн. 2012 г., 18:03
И не забудьте разобраться с этими надоедливымиEarthVaporizedException а такжеUniverseHasEndedException указал выше.
 24 авг. 2016 г., 14:06
так как долго следует в идеале держать розетку открытой доreconnection необходимо? (Я все еще новичок в сокетах)
 14 июн. 2012 г., 00:31
Проблема, описанная в вашем первом абзаце, не ограничивается клиентским сокетом. Это симметрично. Любая сторона может разорвать соединение, как и любой промежуточный узел.
 14 июн. 2012 г., 04:00
@EJP Серверный сокет не закрывается, если клиенты сбрасывают соединения. Все соединения могут быть потеряны на сокете сервера, но сам сокет остается.
 13 июн. 2012 г., 18:06
@ LucaGeretti Такой комментарий забавен, но на самом деле вы просто избегаете отвечать на вопрос. Stackoverflow не являетсяmeant быть скучным, но ответы, которые включают тепловую смерть вселенной, просто бесполезны в неуниверсальном масштабе времени

чем ответ, но как пользователь, которого я обнаружил, сокеты все время падают. Вы не можете держать их открытыми неограниченное время. Когда сокет неожиданно закрывается, пожалуйста (A) сообщите пользователю, что соединение было разорвано, и (B) установите егоreal легко восстановитьsame подключение. Хорошо, это включало игры, но у меня были клиенты, которые не могли бы признать, что сервер пропал, и серверы, которые не могли бы распознать, что я был тем же человеком, что и тот, у которого было разорвано соединение.

Ваш ответ на вопрос