C# 进程间通信 我有一个游戏API,它调用C++ DLL中的方法,你可以通过修改DLL和调用某些方法来为游戏编写机器人。这很好,除了我不是C++的大粉丝,所以我决定使用命名管道,这样我就可以把游戏事件从管道发送到客户端程序,然后发送命令回来。C++侧只是一个简单的发送命名管道的框架。

C# 进程间通信 我有一个游戏API,它调用C++ DLL中的方法,你可以通过修改DLL和调用某些方法来为游戏编写机器人。这很好,除了我不是C++的大粉丝,所以我决定使用命名管道,这样我就可以把游戏事件从管道发送到客户端程序,然后发送命令回来。C++侧只是一个简单的发送命名管道的框架。,c#,.net,c++,ipc,C#,.net,C++,Ipc,在C#方面,我有一些类似的方法: private string Read() { byte[] buffer = new byte[4096]; int bytesRead = pipeStream.Read(buffer, 0, (int)4096); ASCIIEncoding encoder = new ASCIIEncoding(); return encoder.GetString(buffer, 0, bytesRead); } private

在C#方面,我有一些类似的方法:

private string Read()
{
    byte[] buffer = new byte[4096];

    int bytesRead = pipeStream.Read(buffer, 0, (int)4096);

    ASCIIEncoding encoder = new ASCIIEncoding();
    return encoder.GetString(buffer, 0, bytesRead);
}

private void Write(string message)
{
    ASCIIEncoding encoder = new ASCIIEncoding();
    byte[] sendBuffer = encoder.GetBytes(message);
    pipeStream.Write(sendBuffer, 0, sendBuffer.Length);
    pipeStream.Flush();
}

在C++的方面,什么是等价的方法?< /p> 在创建管道并有管道句柄之后,您使用<代码> > Read Fixs/Cuff>和<代码> RealFeFiels 然而,我完全不知道如何使用它们

我上面引用的“命名管道客户端”部分给出了如何使用它们的示例

例如,所有参数的类型是什么

所有参数的类型都在MSDN中定义:请参阅和

如何将从ReadFile方法接收的字节缓冲区转换为字符串,反之亦然

您正在使用
ascienceoding
发送字符串,因此您将收到一个非Unicode字符字符串

您可以使用std::string构造函数的重载将其转换为字符串,该构造函数使用指向字符缓冲区的指针加上指定缓冲区中字符数的sencond参数:

//chBuf and cbRead are as defined in the
//MSDN "Named Pipe Client" example code fragment
std::string received((const char*)chBuf, cbRead);

创建管道并具有管道句柄后,可以使用
ReadFile
WriteFile
API进行读写:有关代码示例,请参见MSDN中的


然而,我完全不知道如何使用它们

我上面引用的“命名管道客户端”部分给出了如何使用它们的示例

例如,所有参数的类型是什么

所有参数的类型都在MSDN中定义:请参阅和

如何将从ReadFile方法接收的字节缓冲区转换为字符串,反之亦然

您正在使用
ascienceoding
发送字符串,因此您将收到一个非Unicode字符字符串

您可以使用std::string构造函数的重载将其转换为字符串,该构造函数使用指向字符缓冲区的指针加上指定缓冲区中字符数的sencond参数:

//chBuf and cbRead are as defined in the
//MSDN "Named Pipe Client" example code fragment
std::string received((const char*)chBuf, cbRead);

谢谢,我知道在我的示例中,ReadFile和WriteFile相当于pipestrea.Write/Read。然而,我完全不知道如何使用它们。例如,所有参数的类型是什么,我如何将可能从ReadFile方法接收的字节缓冲区转换为字符串,反之亦然?我编辑了我的答案,以回答您评论中的其他问题。谢谢,我知道在我的示例中,ReadFile和WriteFile相当于pipestrea.Write/Read。然而,我完全不知道如何使用它们。例如,所有参数的类型是什么,如何将从ReadFile方法接收的字节缓冲区转换为字符串,反之亦然?我编辑了我的答案,以回答您评论中的其他问题。