The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"передача данных через tcp канал"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"передача данных через tcp канал"
Сообщение от gen Искать по авторуВ закладки on 26-Янв-04, 17:07  (MSK)
Каким образом можно узнать при передаче данных через tcp канал что он разорван раньше чем write вернёт -1. У меня при передаче между двумя машинами в одной ethernet сети после того как просто тупо выдёргиваещь коаксиал write возвращает ошибку через 16 минут.
Настройки в сокете (setsockopt) временных параметров в каких величинах ? и что то программа на них не реагирует вообще
где можно почитать о передаче данных через tcp на русском , только по подробней
Заранее благодарен
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "передача данных через tcp канал"
Сообщение от Murr Искать по авторуВ закладки on 26-Янв-04, 23:13  (MSK)
см. SO_KEEPALIVE и иже с ними.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "передача данных через tcp канал"
Сообщение от xander emailИскать по авторуВ закладки on 27-Янв-04, 10:27  (MSK)
>Каким образом можно узнать при передаче данных через tcp канал что он
>разорван раньше чем write вернёт -1. У меня при передаче между
>двумя машинами в одной ethernet сети после того как просто тупо
>выдёргиваещь коаксиал write возвращает ошибку через 16 минут.
>Настройки в сокете (setsockopt) временных параметров в каких величинах ? и что
>то программа на них не реагирует вообще
>где можно почитать о передаче данных через tcp на русском , только
>по подробней
>Заранее благодарен

Поставь таймаут на операции чтения/записи с помощью setsockopt().
Параметры SO_RCVTIMEO и SO_SNDTIMEO соответственно.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "передача данных через tcp канал"
Сообщение от Murr Искать по авторуВ закладки on 27-Янв-04, 11:17  (MSK)
>Поставь таймаут на операции чтения/записи с помощью setsockopt().
>Параметры SO_RCVTIMEO и SO_SNDTIMEO соответственно.


В итоге recv будет вылетать через таймаут даже если разрыва сети не произошло.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "передача данных через tcp канал"
Сообщение от xander Искать по авторуВ закладки on 27-Янв-04, 13:57  (MSK)
>>Поставь таймаут на операции чтения/записи с помощью setsockopt().
>>Параметры SO_RCVTIMEO и SO_SNDTIMEO соответственно.
>
>
>В итоге recv будет вылетать через таймаут даже если разрыва сети не
>произошло.

И то верно ...
Тогда остается SO_KEEPALIVE
Только придется наверное уменьшить интервал между проверками.
Помоему, по умолчанию это 2 часа.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "передача данных через tcp канал"
Сообщение от gen Искать по авторуВ закладки on 28-Янв-04, 14:07  (MSK)
>>>Поставь таймаут на операции чтения/записи с помощью setsockopt().
>>>Параметры SO_RCVTIMEO и SO_SNDTIMEO соответственно.
>>
>>
>>В итоге recv будет вылетать через таймаут даже если разрыва сети не
>>произошло.
>
>И то верно ...
>Тогда остается SO_KEEPALIVE
>Только придется наверное уменьшить интервал между проверками.
>Помоему, по умолчанию это 2 часа.
а где задаётся этот тайм аут?
SO_KEEPALIVE параметр булевый
и вообще есть идеи как можно быстро обнаружить разрыв канала
за комментарии спасибо

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "передача данных через tcp канал"
Сообщение от tolix Искать по авторуВ закладки on 05-Фев-04, 13:07  (MSK)
Параметр SO_KEEPALIVE булевый, и он выставлен на уровне ядра - для его изменения нужно перекомпилить ядро - это не лучший выход. тем более что изменишь его значение сразу для всех сокетов.

на уровне клиента проще всего ждать поступления данных на сокет с помощью select. после их поступления уже читать с read или recv.

еще для оперативной проверки можно воспользоваться методом проверки пульса через передачу внеполосных данных

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "передача данных через tcp канал"
Сообщение от Алексей emailИскать по авторуВ закладки on 26-Фев-04, 16:27  (MSK)
Пытаюсь решить ту же проблему - т.к. SO_SNDTIMEO не работает.
Удалось ли тебе её решить? Под Линуксами, под Виндами?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "передача данных через tcp канал"
Сообщение от Serge emailИскать по авторуВ закладки on 26-Фев-04, 19:29  (MSK)
Надо использовать неблокирующие сокеты. Сильно помочь не смогу, так как сам только с ними начал играться...
Принцип в том, что при (recv/send) управление возвращается сразу, и проанализировав можно сделать полезные выводы.

Подробнее - http://www.kalinin.ru/programming/network/19_12_00.shtml

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру