Non blocking和Asynchronous socket之间有什么区别

时间:2014-05-07 11:00:38

标签: sockets asynchronous nonblocking ioctl fcntl

我们使用以下调用设置的非阻塞和异步套接字模式之间的区别是什么。

  1. 案例1:    int sockfd;    // create_sock(sockfd);

    // init_sock(sockfd);

    fcntl(sockfd,F_SETFL,O_NONBLOCK);

  2. 案例2:

    int sockfd;    // create_sock(sockfd);

    // init_sock(sockfd);

    int on = 1;

    ioctl(sockfd,FIOASYNC,& on);

  3. 案例3:

    int sockfd;

    // create_sock(sockfd);

    // init_sock(sockfd);

    int on = 1; ioctl(sockfd,FIONBIO,& on)

  4. 在上述所有情况下,套接字的行为是什么。

    谢谢,

1 个答案:

答案 0 :(得分:1)

'非阻止'意味着该功能要么做了什么,要么做了什么,并返回了告诉你哪个状态。

'异步'表示函数调用的操作在函数返回后继续运行,并通过其他方式通知您其完成或失败,例如:您可以查询状态的回调或句柄。