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;
}

September 2017

S M T W T F S
     1 2
3456789
1011 12 13141516
17181920 212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 26th, 2017 12:44 pm
Powered by Dreamwidth Studios