В цикле принимаем информацию от
if((newsockfd = accept(sockfd,
(struct sockaddr *) &cliaddr, &clilen)) < 0){
perror(NULL);
close(sockfd);
exit(1);
}
/* В цикле принимаем информацию от клиента до
тех пор, пока не произойдет ошибки (вызов read()
вернет отрицательное значение) или клиент не
закроет соединение (вызов read() вернет
значение 0). Максимальную длину одной порции
данных от клиента ограничим 999 символами. В
операциях чтения и записи пользуемся дескриптором
присоединенного сокета, т. е. значением, которое
вернул вызов accept().*/
while((n = read(newsockfd, line, 999)) > 0){
/* Принятые данные отправляем обратно */
if((n = write(newsockfd, line,
strlen(line)+1)) < 0){
perror(NULL);
close(sockfd);
close(newsockfd);
exit(1);
}
}
/* Если при чтении возникла ошибка – завершаем работу */
if(n < 0){
perror(NULL);
close(sockfd);
close(newsockfd);
exit(1);
}
/* Закрываем дескриптор присоединенного сокета и
уходим ожидать нового соединения */
close(newsockfd);
}
}
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий