为了建立UDP聊天,我需要发送一条消息,同时接收消息。目前,我正在尝试接收消息并阅读命令行,打印消息。而且,我想每10秒调用一次函数func()
。
这是我尝试过的:
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秒被正确调用一次,但是从不读取命令行,因此从不打印消息。我错过了什么 ?