Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
Sockets 非阻塞套接字和异步套接字之间的区别是什么_Sockets_Asynchronous_Nonblocking_Ioctl_Fcntl - Fatal编程技术网

Sockets 非阻塞套接字和异步套接字之间的区别是什么

Sockets 非阻塞套接字和异步套接字之间的区别是什么,sockets,asynchronous,nonblocking,ioctl,fcntl,Sockets,Asynchronous,Nonblocking,Ioctl,Fcntl,我们使用下面的调用设置的非阻塞和异步套接字模式之间的区别是什么 案例1: int-sockfd; //创建_sock(sockfd) //初始sock(sockfd) fcntl(sockfd、F_设置FL、O_非块) 案例2: int-sockfd; //创建_sock(sockfd) //初始sock(sockfd) int on=1 ioctl(sockfd、FIOASYNC和on) 案例3: int-sockfd //创建_sock(sockfd) //初始sock(sockfd) in

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

  • 案例1: int-sockfd; //创建_sock(sockfd)

    //初始sock(sockfd)

    fcntl(sockfd、F_设置FL、O_非块)

  • 案例2:

    int-sockfd; //创建_sock(sockfd)

    //初始sock(sockfd)

    int on=1

    ioctl(sockfd、FIOASYNC和on)

  • 案例3:

    int-sockfd

    //创建_sock(sockfd)

    //初始sock(sockfd)

    int on=1; ioctl(sockfd、FIONBIO和on)

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


    谢谢,

    “非阻塞”意味着函数要么做了什么,要么没有做什么,并返回一个状态,告诉您做了什么


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

    可能重复感谢,请您也解释一下我提到的三种情况下套接字的行为。情况1和3是非阻塞的,这是
    O_NONBLOCK
    FIONBIO
    的意思,情况2是异步的,这是
    FIOASYNC
    的意思。我不认为你真的需要我告诉你。