| 
 | 
| 
 
Чтение пользовательского ввода из сокета 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Пробую написать простенькую клиент-серверную штуку и понял, что совсем не знаю как работать с сокетами. Пишу серверную часть, имею Socket с установленным соединением. Хочу получить пользовательский посимвольный ввод с внешней стороны - пользователь подключен через telnet. Соответственно, со своей серверной стороны хочу обрабатывать InputStream от сокета: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Падает с эксепшеном: Exception in thread "Thread-14" java.net.SocketTimeoutException: Read timed out И, в принципе, логично. У сокета есть таймаут, если клиент за это время ничего не натыкал клавишами в телнете, соединение должно отвалиться. Вопрос, как в подобном случае сделать получение символов с ожиданием ввода? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 24.07.2021, 23:51 | 
  
  
  
   | 
||
| 
 
Чтение пользовательского ввода из сокета 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Этот таймаут можно контролировать, например, установить в 1 час: Код: java 1. 2. 3. Если мы работаем с каким-то сервисом, то конечно этот таймаут должен быть небольшим. Но если это пользовательский ввод, то его нужно увеличить. Клиентская программа при этом может либо показывать пользователю ошибку, либо автоматически стартовать соединение заново. PS: у BufferedReader'a есть readLine(), твой метод можно оформить проще: Код: java 1. 2. 3. 4. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 25.07.2021, 00:11 | 
  
  
  
   | 
||
| 
 
Чтение пользовательского ввода из сокета 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  NullPointer Падает с эксепшеном: Exception in thread "Thread-14" java.net.SocketTimeoutException: Read timed out И, в принципе, логично. У сокета есть таймаут, если клиент за это время ничего не натыкал клавишами в телнете, соединение должно отвалиться. Вопрос, как в подобном случае сделать получение символов с ожиданием ввода? Насколько я помню у сокета 30 секунд таймаут для веб клиента через браузер. Эта вещь ни чем не лечится. Народ просто тупо каждые 10-20 секунд пингует коннекшин чтоб не упал. Как дело обстоит с телнет не знаю. Но замечу этот момент можно поискать на том же стековерфло так как тема злободневная. Удачи ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.07.2021, 21:45 | 
  
  
  
   | 
||
| 
 
Чтение пользовательского ввода из сокета 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Sergunka, 30 минут. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.07.2021, 03:50 | 
  
  
  
   | 
||
| 
 
Чтение пользовательского ввода из сокета 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Sergunka NullPointer Падает с эксепшеном: Exception in thread "Thread-14" java.net.SocketTimeoutException: Read timed out И, в принципе, логично. У сокета есть таймаут, если клиент за это время ничего не натыкал клавишами в телнете, соединение должно отвалиться. Вопрос, как в подобном случае сделать получение символов с ожиданием ввода? Насколько я помню у сокета 30 секунд таймаут для веб клиента через браузер. Эта вещь ни чем не лечится. Народ просто тупо каждые 10-20 секунд пингует коннекшин чтоб не упал. Как дело обстоит с телнет не знаю. Но замечу этот момент можно поискать на том же стековерфло так как тема злободневная. Удачи в firefox оно правится с помощью about:config я помню проверял там было чтото такое. Вроде 3 мин было, может поменяли уже с того момента времени много прошло. Наверняка и keep-alive default timeout value как то регулируется в настройках. Но тут может быть сложее nginx тоже настраивается read, write timeout там что соединение может рваться с двух сторон. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.07.2021, 11:55 | 
  
  
  
   | 
||
| 
 
Чтение пользовательского ввода из сокета 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  для java время сессии для вэб задаётся на сервере . по умолчанию 30 минут, можно менять из кода, можно продлять. как для телнета - хз. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.07.2021, 12:10 | 
  
  
  
   | 
||
| 
 
Чтение пользовательского ввода из сокета 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  вадя для java время сессии для вэб задаётся на сервере . по умолчанию 30 минут, можно менять из кода, можно продлять. как для телнета - хз. сессия и сокет не совсем одно и тоже ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.07.2021, 12:46 | 
  
  
  
   | 
||
| 
 
Чтение пользовательского ввода из сокета 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Сокет и веб-сокет - тоже совсем разные. И таймаут у первого - настраивается программно. https://docs.oracle.com/javase/6/docs/api/java/net/Socket.html#setSoTimeout(int) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.07.2021, 14:07 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?fid=59&msg=40086468&tid=2120386]:  | 
    0ms | 
get settings:  | 
    9ms | 
get forum list:  | 
    12ms | 
check forum access:  | 
    4ms | 
check topic access:  | 
    4ms | 
track hit:  | 
    63ms | 
get topic data:  | 
    10ms | 
get forum data:  | 
    3ms | 
get page messages:  | 
    44ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 12ms | 
| total: | 162ms | 

| 0 / 0 | 

    Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
    
    
    «На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
    
    
    ... ля, ля, ля ...