Я сталкиваюсь с проблемой передачи данных между c # и C ++ (QT) приложением через связь по именованным каналам. Клиентское приложение C # подключается к серверу NamedPipe, который находится на c ++, но сообщение на сервере не обрабатывается правильно. Например, я отправляю значение байта массива синтаксического анализа короткой переменной = 2 и кода C ++ в unsigned int, но на сервере значение всегда равно нулю. Не могли бы вы дать мне знать, что я делаю не так?
Код клиента и сервера:
Код сервера NamedPipe в C ++ с использованием библиотеки QT
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;
Клиент NamedPipe (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");
}
Задача ещё не решена.
Других решений пока нет …