Apr. 14th, 2017

Пытаюсь найти что-нибудь интересное в духе "Тайной комнаты", "Звездных врат", да хоть тех же "Скользящих".
Но что-то совсем уныло нонче. Глянул полторы серии "Fringe" — жуть какая-то, эдакий "рен-тв". Полистал "firefly" — тоже какая-то чушь (хоть актеры и знакомые). Неужто нет нормальных сериалов, уже снятых? Жена нашла "сотню", но там еще в процессе... До этого смотрели "lost" — весьма интересно, но совершенно одноразово. Опять что ли "звездные врата" пересматривать?
Ребятки, работая с сокетами, учитывайте, что это вам не файлы!
Мне пришлось забульбенить логгер, чтобы понять эту простую истину: если клиент закрыл со своей стороны сокет, то read() вернет 0, как если бы данных не было, а select() спокойно отработает. Вывод таков. Нельзя писать
if(!(rd = read(sock, buff, BUFLEN-1))) continue;

после вызова select(), надеясь, что ошибка произойдет в select() и соответствующим образом будет выявлена. Ни в коем разе! select() скажет, что данные на входе есть. А вот read() в этом случае вернет не отрицательное значение, а 0!
В общем, писать надо так:
if(!(rd = read(sock, buff, BUFLEN-1))){
    putlog("socket closed. Exit");
    break;
}

July 2017

S M T W T F S
      1
23 4 5 6 78
9 101112 131415
16171819 202122
23242526272829
3031     

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 25th, 2017 04:48 am
Powered by Dreamwidth Studios