Прием и передача данных
if (send (newsockfd, BRSTR, strlen (BRSTR)+ 1, 0) ! = strlen (BRSTR)+ 1) {
printf ("error writing socket!");
return 0;
}
shutdown (newsockfd, 1);
close (newsockfd);
return 0;
}
for (i=5; buf [i] && (buf [i] > ' '); i++);
buf [i] = 0;
/+ открываем файл*/
if ((filefd = open (buf+ 5, 0_RDONLY)) < 0) {/* нет файла! */
if (send (newsockfd, FNFSTR, strlen (FNFSTR)+ 1, 0)! = strlen (FNFSTR)+ 1) {
printf ("error writing socket!");
return 0;
}
shutdown (newsockfd, 1);
close (newsockfd);
return 0;
}
/* читаем из файла порции данных и посылаем их клиенту */
while (len = read (filefd, &buf, BUFLEN))
if (send (newsockfd, buf, len, 0) < 0) {
printf ("error writing socket!");
return 0;
}
close (filefd);
shutdown (newsockfd, 1);
close (newsockfd);
return 0;
}
/*это – отец. Он просто закрывает свой новый сокет и продолжает прослушивать старый*/
close (newsockfd);
}
}
5
предыдущаяследующая тема