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

Как только установлено соединение, передача данных осуществляется
вызовом библиотечных функций t_snd(3N) и t_rcv(3N). Работа сервера
заключается в передаче клиенту содержимого файла logfile.
Когда цикл передачи завершается, вызывается t_sndrel(3N) для
корректного прекращения соединения.
                     ПЕРЕДАЧА ДАННЫХ - ПРИМЕР

 run_server(int listen_fd)
 {
   int nbytes;
   FILE *logfp;
   char buf[1024];

   switch (fork()) {

   case -1:   perror("fork failed"); exit(20);

   default:   /* Parent */
          if(t_close(conn_fd) < 0) {
              t_error("t_close - conn_fd"); exit(21);
          }
   case 0:    /* Child */
          if(t_close(listen_fd) < 0) {
              t_error("t_close - listen_fd"); exit(22);
          }
          if((logfp = fopen("logfile", "r")) == NULL) {
              perror("Cannot open logfile"); exit(23);
          }

  . . .
          while((nbytes = fread(buf, 1, 1024, logfp)) > 0)
              if( t_snd(conn_fd, buf, nbytes, 0) < 0) {
                   t_error("t_snd failed"); exit(26);
              }
          if(t_sndrel(conn_fd) < 0) {
              t_error("t_sndrel failed"); exit(26);
          }
          pause();  /* For orderly release indication */
   }
 }