能否详细说明一下什么是重叠套接字、非重叠套接字??

解决方案 »

  1.   

    重叠I/O操作指系统可以一次投递一个或多个 SOCKET 的 I/O 请求,当它们完成的时候,通过一种机制来通知应用程序.应用程序再去处理这些已经完成的操作. 这会提升系统的性能. 使用标志 WSA_FLAG_OVERLAPPED 创建的套接字,具有重叠操作的能力:SOCKET s = WSASocket(AF_INET, SOCKET_STREAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED);否则就是非重叠的
      

  2.   

    在创建管道时使用FILE_FLAG_OVERLAPPED标志的作用呢?
      

  3.   

    HANDLE CreateNamedPipe(
      LPCTSTR lpName,                             // pipe name
      DWORD dwOpenMode,                           // pipe open mode
      DWORD dwPipeMode,                           // pipe-specific modes
      DWORD nMaxInstances,                        // maximum number of instances
      DWORD nOutBufferSize,                       // output buffer size
      DWORD nInBufferSize,                        // input buffer size
      DWORD nDefaultTimeOut,                      // time-out interval
      LPSECURITY_ATTRIBUTES lpSecurityAttributes  // SD
    );
    创建命名管道和打开已经存在的命名管道,其中lpName为管道名称,dwOpenMode为创建方式,可以是下面值的组合: 
    PIPE_ACCESS_INBOUND:管道只能用作接收数据。 
    PIPE_ACCESS_OUTBOUND:管道只能用作发送数据。 
    PIPE_ACCESS_DUPLEX:管道既可以发送也可以接收数据。(上面这三个值只能够取其中一个) 
    FILE_FLAG_WRITE_THROUGH:管道用于同步发送和接收数据,只有在数据被发送到目标地址时发送函数才会返回,如果不设置这个参数那么在系统内部对于命名管道的处理上可能会因为减少网络附和而在数据积累到一定量时才发送,并且对于发送函数的调用会马上返回。 
    FILE_FLAG_OVERLAPPED:管道可以用于异步输入和输出,异步读写的有关方法和文件异步读写是相同的。
      

  4.   

    用socket创建的套接字默认是重叠的