Читать командную строку и recvfrom одновременно в C - PullRequest
0 голосов
/ 22 апреля 2019

Чтобы построить 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 секунд, но командная строка никогда не читается, поэтому сообщение никогда не печатается.Что я упустил ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...