Я узнал о Named Pipe и попытался отправить сообщение из приложения C ++ и C #, и оно отлично работает.Но я не могу отправить изображение со стороны C ++ в C # с помощью Named Pipe.Может кто-нибудь, пожалуйста, скажите мне, как я могу это сделать.
Мой код C # для именованного канала
static void Main(string[] args)
{
Console.WriteLine("Creating Client Pipe");
NamedPipeClientStream pipe = new NamedPipeClientStream(".", "HyperPipe", PipeDirection.InOut);
Console.WriteLine("Pipe Created Successfully, Connecting to Server");
pipe.Connect();
Console.WriteLine("Successfully, Connected to Server");
using (StreamReader rdr = new StreamReader(pipe, Encoding.Unicode))
{
System.Console.WriteLine("Message from Server: " + rdr.ReadToEnd());
}
Console.ReadKey();
}
и Код C ++
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Server Creating Pipe\n";
HANDLE hPipe = ::CreateNamedPipe(_T("\\\\.\\pipe\\HyperPipe"),
PIPE_ACCESS_DUPLEX,
PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE,
PIPE_UNLIMITED_INSTANCES,
4096,
4096,
0,
NULL);
cout << "Server Created Succesfully";
ConnectNamedPipe(hPipe, NULL);
LPTSTR data = _T("Hello");
cout << "Sending Message to Client";
DWORD bytesWritten = 0;
WriteFile(hPipe, data, _tcslen(data) * sizeof(TCHAR), &bytesWritten, NULL);
CloseHandle(hPipe);
return 0;
}
Я хочу, чтобы, когда я ввожу путь на стороне C #, он отправлял его на C ++, а с помощью библиотеки OpenCV я извлекал это изображение из памяти и отправлял на C #.
Заранее спасибо