The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"ф-ция poll"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"ф-ция poll"
Сообщение от Povesa emailИскать по авторуВ закладки(ok) on 04-Май-04, 01:53  (MSK)
Здраствуйте. Я новичок в сетевом программировании и у меня возник такой трабл: почему ф-ция poll не можте отследить разрыв канала, а вместо этого определяет поступления новых данных на сокет(тобишь POLLIN)
struct pollfd fds[1];

int main(void)
{
struct sockaddr_in addr;
int value=1;int cl=1,result,k,addr_len=sizeof(addr),sd;
char buffer[256];
int bytes;
sd = socket(PF_INET, SOCK_STREAM, 0);
bzero(&addr, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(PORT);
addr.sin_addr.s_addr = INADDR_ANY;
if ( bind(sd, (struct sockaddr *)&addr, sizeof(addr)) == 0 )
{
                listen(sd,5);
fds[0].fd=accept(sd,0,0);
fds[0].events=POLLIN;
for (;;)
{
if ( (result = poll(fds, 1, 500)) > 0 )
{   int i;
if ((fds[0].revents & POLLHUP)==POLLHUP)
{
close(fds[0].fd);
bzero(&fds[0], sizeof(fds[0]));
}
if ( (fds[0].revents & POLLIN)==POLLIN )
{
if(recv(fds[0].fd, buffer, sizeof(buffer), 0)>0)
{
puts(buffer);
if((fds[0].revents & POLLOUT)==POLLOUT)             send(fds[0].fd, buffer, bytes, 0);
}
}
}
else if ( result < 0 )
{perror("poll() error");exit(0);}
}
}
return 0;
}

Это простой эхо-сервер. Почему он не работает как нада при разрыве соединения??

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "ф-ция poll"
Сообщение от genie Искать по авторуВ закладки on 04-Май-04, 04:58  (MSK)
Potomu chto ono tak rabotaet - esli recv() vernul 0, znachit soedinenie razorvano.
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру