C# 进程间通信 我有一个游戏API,它调用C++ DLL中的方法,你可以通过修改DLL和调用某些方法来为游戏编写机器人。这很好,除了我不是C++的大粉丝,所以我决定使用命名管道,这样我就可以把游戏事件从管道发送到客户端程序,然后发送命令回来。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
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方法接收的字节缓冲区转换为字符串,反之亦然?我编辑了我的答案,以回答您评论中的其他问题。