The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
TIME_WAIT, !*! Brick, 23-Авг-04, 10:44  [смотреть все]
Добрый день!

Как заставить приложение не оставлять соединений такого типа: "tcp4       0      0  192.168.0.1.63009      192.168.0.1.2156       TIME_WAIT"???

Всем заранее спасибо.

  • TIME_WAIT, !*! XMan, 17:10 , 23-Авг-04 (1)
    setsockopt(сокет,SOL_SOCKET,SO_REUSEADDR,(char *)&i,sizeof(i))

    где int i=1

    man socket

    • TIME_WAIT, !*! Brick, 15:11 , 25-Авг-04 (2)
      >setsockopt(сокет,SOL_SOCKET,SO_REUSEADDR,(char *)&i,sizeof(i))
      >
      >где int i=1
      >
      >man socket

      это только отключает сообщение об ошибке:"address already in use", а мне надо, чтобы соединения именно пропадали, а они висят,как зомби :(

      • TIME_WAIT, !*! klalafuda, 16:13 , 25-Авг-04 (3)
        >>setsockopt(сокет,SOL_SOCKET,SO_REUSEADDR,(char *)&i,sizeof(i))
        >>
        >>где int i=1
        >>
        >>man socket
        >
        >это только отключает сообщение об ошибке:"address already in use", а мне надо,
        >чтобы соединения именно пропадали, а они висят,как зомби :(

        правильный ответ - никак. за подробностями "почему" почитайте умные книжки типа Стивенса.

        // wbr

      • TIME_WAIT, !*! XMan, 18:32 , 25-Авг-04 (4)
        klalafuda правильно сказал. Единственное неудобство такого состояния - это невозможность запустить программу еще раз, пока состояние не отвалится. В разных ОС на это отводится разное время, но обычно порядка 2-3 минут.

        Потому я тебе и сказал пользовать REUSE_ADDR. Это не "только отключает сообщение об ошибке" - это позволяет опять захватить этот порт без ожидания этих самых 2-3 минут.

        • TIME_WAIT, !*! klalafuda, 18:38 , 25-Авг-04 (5)
          >klalafuda правильно сказал. Единственное неудобство такого состояния - это невозможность запустить программу
          >еще раз, пока состояние не отвалится. В разных ОС на это
          >отводится разное время, но обычно порядка 2-3 минут.
          >
          >Потому я тебе и сказал пользовать REUSE_ADDR. Это не "только отключает сообщение
          >об ошибке" - это позволяет опять захватить этот порт без ожидания
          >этих самых 2-3 минут.

          ну тогда уж SO_REUSEPORT

          ---man getsockopt---
          SO_REUSEPORT    enables duplicate address and port bindings
          ---man getsockopt---

          // wbr

  • TIME_WAIT, !*! qq, 01:42 , 26-Авг-04 (7)
    >Добрый день!
    >
    >Как заставить приложение не оставлять соединений такого типа: "tcp4    
    >   0      0  
    >192.168.0.1.63009      192.168.0.1.2156    
    >  TIME_WAIT"???
    >
    >Всем заранее спасибо.

    вот, чё люди пишут по этому поводу:
    http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&c2coff=1&...$%p1.105867406@newssvr30.news.prodigy.com

    TIME_WAIT is the state
    that a socket goes into _after_ a graceful shutdown has been completed, and it
    stays there for four minutes (2*MSL, to be exact).  This is, however, a normal
    and desired state for such a socket to be in, so that any packets, duplicated,
    retried, or erroneous, still bouncing around in the network get a proper
    response.

    TIME_WAIT is good.  In a properly written socket stack, TIME_WAIT sockets
    aren't as "heavy" as open sockets (they only need to contain the source and
    remote addresses and ports, and the fact that the socket is in TIME_WAIT
    state), and so shouldn't noticeably impact the number of other sockets that
    can be open.




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

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