‮Сдвиг по фазе (kincajou) wrote,
‮Сдвиг по фазе
kincajou

А как узнать, что клиент отключился от сервера?

Вот, например, простой случай:
TCP-сервер ждёт подключение. Использует telnet, подключаемся - открывается соединение и всё, что мы пишем в telnet-клиенте, выаливается на консоль сервера. Теперь я закрываю telnet и... сервер понятия не имеет, что соединения больше нет, recv() в блокирующем режиме по-прежнему ждёт, что ему придут какие-то данные.

А если сделать сокет этого соединения неблокирующим, то recv() всё время возвращает ошибку 11 ("Resource temporarily unavailable").

Гадство какое-то.

И победить зомби-сокет не получается (в этом случае уже TCP-соединение).
setsockopt(socket_id, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int));
shutdown(socket_id, SHUT_RDWR);
close(socket_id);
- да плевать оно хотело, всё равно bind() будет плакать о уже занятом адресе около минуты после того, как процесс был завершён.

Шо в лоб, шо по лбу.
Subscribe

  • Толерантность, равенство и лицемерие.

    Бибиси зачем-то не первый уже день раскручивает американскую историю с гибелью некой Габби Петито. И в своей же статье пишет: Смерть Габби Петито…

  • Спасли!

    Предполагается, что перегруженная мигрантами лодка прибыла к берегам Италии из Ливии, на ней было немало женщин и детей. И в самом деле, глядя на…

  • Разбился самолёт с парашютистами.

    Звучит как начало чернушного анекдота, типа "сгорела пожарная часть" или "чиновник сел за растрату".. эхм... Но - нет, это совсем не анекдот, люди…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 10 comments

  • Толерантность, равенство и лицемерие.

    Бибиси зачем-то не первый уже день раскручивает американскую историю с гибелью некой Габби Петито. И в своей же статье пишет: Смерть Габби Петито…

  • Спасли!

    Предполагается, что перегруженная мигрантами лодка прибыла к берегам Италии из Ливии, на ней было немало женщин и детей. И в самом деле, глядя на…

  • Разбился самолёт с парашютистами.

    Звучит как начало чернушного анекдота, типа "сгорела пожарная часть" или "чиновник сел за растрату".. эхм... Но - нет, это совсем не анекдот, люди…