Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 接收UDP消息,但如果没有,则转到_C_Sockets_Udp - Fatal编程技术网

C 接收UDP消息,但如果没有,则转到

C 接收UDP消息,但如果没有,则转到,c,sockets,udp,C,Sockets,Udp,我有点小问题,但还没有找到解决办法 问题似乎很简单: 我有一个过程。在这个过程中,我想检查是否有UDP消息发送到我正在使用的端口。如果有消息发送,整个发送和接收过程都没有问题。如果没有发送消息,则进程正在等待消息,程序在发送下一条消息之前不会继续 问题是,如果没有消息,我如何修改代码,让流程继续进行 我的代码(接收UDP消息的标准代码): 您的选择如下: 使用select(),poll(),epoll()等来等待数据,而不是直接调用recvfrom() 通过使用fcntl()在套接字上设置O\u

我有点小问题,但还没有找到解决办法

问题似乎很简单:

我有一个过程。在这个过程中,我想检查是否有UDP消息发送到我正在使用的端口。如果有消息发送,整个发送和接收过程都没有问题。如果没有发送消息,则进程正在等待消息,程序在发送下一条消息之前不会继续

问题是,如果没有消息,我如何修改代码,让流程继续进行

我的代码(接收UDP消息的标准代码):


您的选择如下:

  • 使用
    select()
    poll()
    epoll()
    等来等待数据,而不是直接调用
    recvfrom()
  • 通过使用
    fcntl()
    在套接字上设置
    O\u NONBLOCK
    标志,将套接字设置为非阻塞。这将使
    recvfrom()
    立即返回,而不是阻塞
  • (不推荐)使用
    SO\RCVTIMEO
    socket选项设置接收超时
  • if((nbrecv = recvfrom(s, buffer, BUFFER_SIZE, 0, &remote, &len_remote)) == -1){
        fprintf(stderr, "failure!\n");
        exit(-1);
    }
    
    etc.