C++と.NETの間でNamed Pipesを動作させるのは本当に苦労しました。 2つのC++アプリケーション間または2つの.NETアプリケーション間で動作するNamed Pipesの作成に問題はありませんでした。C++と.NETの間で名前付きパイプを動作させる方法を教えてください。
1
A
答えて
2
私はこのコミュニケーションに問題はありません。私はこのシナリオをいくつかのプロジェクトで使用しています。
C++側:
public string GetMessageFromPipe()
{
int _lenght = 0;
/*
* Pipe Control Block
*/
_pipeserver.WaitForConnection();
do
{
_lenght += _pipeserver.Read(_buffer, _lenght, _buffer.Length);
}
while (!_pipeserver.IsMessageComplete);
_pipeserver.Disconnect();
/*
* End of Pipe Control Block
*/
if (_lenght == 0)
{
throw new ArgumentException("Message is empty ;-(");
}
return Encoding.UTF8.GetString(_buffer, 0, _lenght);
}
パイプの作成:C#の側で
LPTSTR lpszPipename = TEXT("\\\\.\\pipe\\pipename");
CHAR chReadBuf[1024];
DWORD cbRead;
BOOL fResult;
fResult = CallNamedPipe(
lpszPipename, // pipe name
_Message, // message to server
strlen(_Message), // message length
chReadBuf, // buffer to receive reply
sizeof(chReadBuf), // size of read buffer
&cbRead, // number of bytes read
NMPWAIT_WAIT_FOREVER); // wait;-)
_pipeserver = new NamedPipeServerStream("pipename",
PipeDirection.InOut, 254, PipeTransmissionMode.Message,
PipeOptions.Asynchronous, 262144, 262144);
1
私はそのパイプの名前を確認するためにProcessExplorerを使用することがわかっ私は開いていた。 私はC++と.NETの両方で全く同じ名前を使用しましたが、ProcessExplorerはそれらが異なっていたことを示しました。
私はこれらの名前を使用して終了:.NETで : "\\ \パイプ\のXXXDebug。"
C++で: "\\ \パイプ\ PIPE \ XXXDebug"
何私はこれらの両方のためにProcessExplorerにして見た: \デバイス\名前付きパイプの\パイプ\のXXXDebug
もう一つは、私は経由.NETでのパイプをオープンしました:
NamedPipeServerStreamパイプ=という名前の新しいですPipeServerStream(_pipeName、PipeDirection.InOut、1、PipeTransmissionMode.Byte);
そして、私はC++経由でパイプをオープンしました:
g_hPipe = CreateFile(
_pipeName,
GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
+0
今回は、すべてが...余分なパイププレフィックスでした...本当にM $ ?!真剣に! – Alexandru
関連する問題
- 1. Qt :: 4.6(C++)でキーワードを即時に動作させる方法を教えてください。
- 2. Perl:ファイル名を動的に開く方法を教えてください
- 3. redisデータベース間の変更方法を教えてください。
- 4. EmacsでCコードを自動インデントする方法を教えてください。
- 5. ローカルマシンと同じライブサーバーでJoomlaサイトを動作させる方法を教えてください。
- 6. URLに/index.phpを入れなくてもSlim Frameworkを動作させる方法を教えてください。
- 7. ブログのコメント作成方法を教えてください
- 8. zclipの作業方法を教えてください
- 9. プラグインプログラミングの作成方法を教えてください。
- 10. このUPDATEをこのwhileループ内でのみ動作させる方法を教えてください。
- 11. クライアント側のCustomMessageInspectorは、このコードをexeファイル内で動作させる方法を教えてください。
- 12. GridViewのユーザー名列をOutlookで開く方法を教えてください。
- 13. RadioButtonsをMVVMパターンでComboBoxのように動作させる方法を教えてください。
- 14. チェンジリストにないファイルに対してSubversionを動作させる方法を教えてください。
- 15. NSISで以前のバージョンをアンインストールする方法を教えてください
- 16. Gmailのタブ付きビューの表示方法を教えてください。
- 17. CMFCToolBarでイメージマスクを認識させる方法を教えてください。
- 18. Bisonをエラーで停止させる方法を教えてください。
- 19. openALでオーディオレコーディングデバイスを選択させる方法を教えてください。
- 20. C#.NETでMSワード文書を操作する方法を教えてください
- 21. C#このスレッドアプリケーションの作成方法を教えてください。
- 22. Null Coalesce演算子をASP.NET MVC Razorで動作させる方法を教えてください。
- 23. 2つの列で構成される名前の検証方法を教えてください。
- 24. イメージをiOSアプリケーションのボタンのように動作させる方法を教えてください。
- 25. キュウリのシナリオを失敗させる方法を教えてください。
- 26. ポイントから消える方法を教えてください。
- 27. デュプレックスストリームに書き込む方法を教えてください。
- 28. EclipseでAVDを「見る」方法を教えてください。
- 29. C#サーバとC++クライアント間の名前付きパイプ通信
- 30. Mavenプラグインの動作を教えてください。
詳細はしてください。それはどこで失敗するのですか? –
特定のエラーが表示されますか? –
すごい、速い反応。申し訳ありませんが、質問をした直後に問題の回答を投稿しようと思っていますが(他の人を助けるために)、気が散ってしまい、回答が予想よりも長くかかりました。ご心配をありがとう。 – Solx