[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Передача данных - Пример

Клиент должен принять данные, переданные через транспортное
соединение.
Клиент постоянно вызывает t_rcv для обработки приходящих данных.
Если данных нет, t_rcv останавливается, пока они не появятся. t_rcv
принимает данные вплоть до 1024 байт длиной и возвращает число
полученных байтов. Клиент пишет эти данные в стандартный вывод и
продолжает работу. Когда t_rcv завершится неудачей, обмен данными
прекратится - это может произойти при нарушении порядка приема
сообщений или разрыве соединения.
Если fwrite(3N) завершается неудачей, клиент вызывает exit,
закрывая точку предоставления транспортных услуг. Если транспортная
точка закрыта во время передачи вызовом exit(2) или t_close(3N),
соединение будет разорвано и удаленный пользователь получит
уведомление о прекращении соединения.
                     ПЕРЕДАЧА ДАННЫХ - ПРИМЕР
    while((nbytes = t_rcv(fd, buf, 1024, &flags)) != -1) {
        if(fwrite(buf, 1, 1024, stdout) < 0) {
           perror("fwrite");
           exit(5);
        }
    }
  . . .
         if(t_sndrel(fd) < 0) {
            t_error("t_sndrel failed");
            exit(7);
         }
         exit(0);
  . . .