VC++2005にて下記サイトを参考にパイプを用いたプロセス間通信を行うプログラムを作成しています。
猫でもわかるプログラミング
(1)第242章 匿名パイプ(サーバー側)
http://www.kumei.ne.jp/c_lang/sdk3/sdk_242.htm
(2)第243章 匿名パイプ(クライアント側)
http://www.kumei.ne.jp/c_lang/sdk3/sdk_243.htm
サーバー側からWriteFileでデータを送信する際に、
char型配列に入ったバッファデータ「szBuf」を送信し、
クライアント側のReadFileで同じく「szBuf」で受信していますが、
構造体Data
==================
typedef TypeData{
int a;
int b;
char c[10];
}Data;
==================
のオブジェクトdataを送信するには、WriteFile及びReadFileの箇所は
どのように実装すれば良いのでしょうか?
MSDNにはWriteFileの引数の型はLPCVOIDとあるため、
可能だと思うのですが。。。
もし解決策をご存知の方おられましたら、ご教示お願い致します。
No.3ベストアンサー
- 回答日時:
>Data* data;
>ReadFile(hRead, (LPVOID)data, sizeof(data), &dwResult, NULL);
構造体の実体はmalloc()等で作ってありますか?
補足のコードのままだとすると、dataの中身はNULL(あるいはゴミ)になっているのでエラーになって当然です。
////////
Data* data;
data = malloc(sizeof(data));
ReadFile(hRead, (LPVOID)data, sizeof(data), &dwResult, NULL);
////////
あるいは、ポインタを使わずに次のようにしてもいいです。
Data data;
ReadFile(hRead, (LPVOID)&data, sizeof(data), &dwResult, NULL);
※WriteFileの方も、dataはポインタではないと思うのですが...
No.2
- 回答日時:
(LPCVOID)data
を
(LPCVOID)&data
としてみて下さい。
この回答への補足
ご回答ありがとうございます。
(LPCVOID)data
⇒(LPCVOID)&data
とすることでWrite側はコンパイルが通りました。
しかしRead側で
Data* data;
ReadFile(hRead, (LPVOID)data, sizeof(data), &dwResult, NULL);
とポインタで受け取ろうと思ったのですが、画像の様なエラーが出てしまい、
データを受け取れません。。
聞いてばかりで本当に申し訳ありませんが、Read側でどのような実装で
データを受け取れば良いのか、ご教示お願いできませんでしょうか?
No.1
- 回答日時:
普通のファイルI/O同様に扱えます。
Dataにキャストすれば問題ないと思います。
この回答への補足
typedef TypeData{
⇒typedef struct TypeData{
ですね。すみません。。
こちらのURLの方が分かりやすかったので、参考にしてキャストしてみました。
http://www2m.biglobe.ne.jp/~yasutaka/intro2/no_1 …
WriteFile(hWrite, szBuf, sizeof(szBuf), &dwResult, NULL)
の箇所を
Data data;
WriteFile(hWrite, (LPCVOID)data, sizeof(data), &dwResult, NULL)
にキャストし、実行しましたが下記エラーが発生しました。
>2 番目の引数を 'Data' から 'LPVOID' に変換できません。
キャストの仕方が悪いのでしょうか?お手数ですが、具体的な解決策についてご教示お願いできませんでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- サーバー お名前ドットコムの共用サーバー 送信済みメールをサーバーから削除できるか? 2 2023/03/01 10:44
- C言語・C++・C# 現在プログラムを作っているのですが、実行したときに写真のように結果が表示されるのですが、これを CH 2 2023/01/18 16:22
- ネットワーク OSI参照モデルの各層の役割がわかりません。 3 2023/04/21 21:12
- その他(メールソフト・メールサービス) メールサーバーは「PC側がメールをDL済みか否か?」を何を以て感知するのか? 2 2022/12/20 14:56
- サーバー 接続・ログインはできているのにメールが送信できない 2 2022/06/27 15:03
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- HTML・CSS GETをPOSTに変更したところ 送信 不能です。 1 2022/04/10 17:31
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TOEFLでadhdすぎて
-
C++でデスクトップGUIアプリ開...
-
これなにがちがうんですか??
-
chatgptでつくってもらったコー...
-
プログラミング言語の制作方法...
-
こんなことてしますか??
-
ArduinoでMouse関数を使用して...
-
WindowsのCapsLock(キャップス...
-
LinuxカーネルのCFSで用いられ...
-
VisualStudio2022でC言語プログ...
-
Int('1234') で、strをかんたん...
-
VisualStudioでのプログラミン...
-
C言語をコンパイルするとコンピ...
-
システムエンジニアの適正について
-
どちのほうがすきですか?
-
Notepad++の関数リスト表示でC...
-
gccを行ってもexeファイルが生...
-
質問失礼します。 プログラム言...
-
C++6.0でのresource.hについて
-
トリプトファンってケト原性あ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ポインター引数の関数でコンパ...
-
stable diffusionのエラー
-
printfの%eで指数部分の桁数を...
-
エクセルVBA:日付データの変換...
-
int型(2バイト)データの分割
-
c言語の多次元配列で1から100ま...
-
C#でのswitch文
-
【Excel VBA】10進数を2進数に...
-
途中経過も表示するプログラム
-
pythonでDBのカラム名で取得し...
-
CreateProcessでの環境変数の設...
-
linuxのシェルでファイル名に先...
-
C言語についてです! 同じ年の...
-
c言語 配列から数字だけをint型...
-
c言語での wavファイルの編集(...
-
matlabのソースコードをpython...
-
ビットデータのチェック方法
-
10個の実数に対する降順ソート...
-
python 気象データの取得
-
C言語の構造体にてバブルソート...
おすすめ情報