none
管道的问题 RRS feed

  • 问题

  • 使用WriteFile以Block模式写入管道的时候 和 以 Block模式读出数据的时候遇到一些问题:
    1. 我write以byte模式写入,writeFile,一次写入一段Message,包括长度,因此是可以解析的
    2. 我使用ReadFile,在另一个程序中读取Pipe数据,总共读2次,一次读长度,一次读后续数据,但是出现一个问题,我的WriteFile两次中只能成功一次,第二次就Fail了

    Client端:
    hPipe = ConnectNamedPipe(......);
    while(ReadFile(hPipe, buffer_ptr,2,&ct,NULL)&&ReadFile(hPipe, buffer_ptr+2,buffer[1],&ct,NULL))
    {
    //Send message
    }
    DisconnectNamedPipe(hPipe);
    CloseHandle(hPipe);
    Server端
    if (connected)
    {
    if (!WriteFile(hPipe,buf,11,&wlen,NULL))
    {
    //disconnect
    //start a new thread to do block waiting
    }
    }
    但是在处理完第一条message的时候,ReadFile失败了!
    GetLastError得到的是ERROR_SUCCESS
    Pipe里面没数据的时候,应该Block?为什么是ERROR_SUCCESS?这是什么问题?
    请求高人指点!

    2010年1月8日 2:32

答案

全部回复