Чтобы построить UDP-чат, мне нужно отправить сообщение и одновременно получить сообщения.На данный момент я пытаюсь получать сообщения и читать командную строку, распечатать сообщение.Более того, я хочу вызывать функцию func()
каждые 10 секунд.
Это то, что я пробовал:
fd_set readfds;
struct timeval timeout;
char buf[100];
while(1){
FD_ZERO(&readfds);
FD_SET(sock_fd,&readfds);
timeout.tv_sec = 10;
timeout.tv_usec = 0;
if(select(sock_fd +1, &readfds,NULL,NULL,&timeout) != 0){
receiveMessages(sock_fd);
memset((void*)buf,0,100);
if(read(sock_fd,(void*)buf,100)!=-1){
printf("Message : %s\n", buf );
}
}else{
func();
}
}
В функции receiveMessages()
вызывается только одна функция:recvfrom()
.
Функции receiveMessages(sock_fd)
и func()
правильно вызываются каждые 10 секунд, но командная строка никогда не читается, поэтому сообщение никогда не печатается.Что я упустил ?