我在通过命名管道通信在 c# 和 C++ (QT) 应用程序之间传递数据时遇到问题。C# 客户端应用程序连接到 C++ 中的 NamedPipe 服务器,但在服务器上未正确解析消息。例如,我正在发送短变量 = 2 的值,并且 c++ 代码将字节数组解析为无符号整数,但服务器中的值始终为零。你能告诉我我做错了什么吗?
客户端和服务器代码:
使用 QT 库的 C++ 中的 NamedPipe 服务器代码
QLocalSocket *local_socket = _local_server->nextPendingConnection();
if (!local_socket->waitForReadyRead(gft::PROC_TIMEOUT)) {
qDebug() << "gft_plugin: timeout while waiting for data";
return;
}
int bytesavailable = local_socket->bytesAvailable();
QByteArray buffer;
QDataStream in(&buffer, QIODevice::ReadOnly);
buffer.append(local_socket->readAll());
unsigned int msg;
in >> msg;
unsigned int a_id = msg;
命名管道客户端 (C#)
var clientStream = new NamedPipeClientStream("localhost", "gft_plugin_server", PipeDirection.InOut);
clientStream.Connect();
if (clientStream.IsConnected)
{
_stop = false;
UInt16 a_id = 2;
byte[] b = BitConverter.GetBytes(a_id);
clientStream.Write(b, 0, b.Count());
clientStream.Flush();
}
else
{
MessageBox.Show("Could not connected");
}