Hello люди. Есть пример из книги. Но не понимаю почему не работает. Может кто-то подскажет?!
server
int main (void)
{
int listenfd, connfd;
time_t ticks;
char buff[LINE];
struct sockaddr_in servaddr;
errno=0;
if((listenfd=socket(AF_INET, SOCK_STREAM, 0))<0)
{
fprintf(stderr,"%s\n",strerror(errno));
exit(EXIT_FAILURE);
}
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(PORT);
if((bind(listenfd,(struct sockaddr *)&servaddr, sizeof(servaddr)))!=0)
{
fprintf(stderr,"%s\n",strerror(errno));
exit(EXIT_FAILURE);
}
if((listen(listenfd,16))!=0)
{
fprintf(stderr,"%s\n",strerror(errno));
exit(EXIT_FAILURE);
}
for(;;)
{
connfd=accept(listenfd,(struct sockaddr *)NULL, NULL);
ticks=time(NULL);
snprintf(buff,sizeof(buff),"%24s\er\en",ctime(&ticks));
write(connfd,buff,strlen(buff));
close(connfd);
}
return 0;
}
client
int main (int argc, char *argv[])
{
int sockfd, n;
char recvline[LINE-1];
struct sockaddr_in servaddr;
if(argc!=2)
{
printf("Usage:%s ip address time server\n");
exit(EXIT_FAILURE);
}
if((sockfd=socket(AF_INET, SOCK_STREAM, 0))<0)
{
perror("Socket init: ");
exit(EXIT_FAILURE);
}
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(PORT);
if(inet_pton(AF_INET,argv[1],&servaddr.sin_addr)<0)
{
perror("inet_pton: ");
exit(EXIT_FAILURE);
}
while((n=read(sockfd,recvline,LINE))>0) //чтение не происходит (
{
recvline[n]=0;
if(fputs(recvline,stdout)==EOF) perror("fputs: ");
}
if(n<0) perror("Error read of socket: ");
return 0;
}
Заранее спасибо!
Ответ на:
комментарий
от eXire
Ответ на:
комментарий
от golodranez
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Проблема с connect (2006)
- Форум Accept блокирует работу (2017)
- Форум Бесконечный accept() вешает систему (2014)
- Форум Зависает socket (2014)
- Форум Сокеты (2019)
- Форум проблема с получением файла на эхо сервере (2016)
- Форум Sockets (2002)
- Форум Пример программы UDP-сервера (2014)
- Форум 2014-11-17T23:34:13+00:00 kern infoblox kernel[]: info [ 2032.012246] your_daemon forgot to set AF_INET in raw sendmsg. Fix it! (2014)
- Форум В чем ошибка чтения? (2020)