こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Visual c++でダイアログと処理の切り離し

初心者ですので簡単なものですが質問させてください。

Visual c++2005のMFCのダイアログベースで作られたタイマーで周期処理されるプロジェクトがあります。
ダイアログと処理を別々のプロジェクトに切り離してUDPで通信したいと考えています。

まずは簡単なモノで試したいのですが、どうすればよいのかわからないのでご教授いただけたらと思います。

例えば、処理としてはテキストボックスに数字を入力しボタンを押したら計算結果が表示される簡単なものです。
まずは、これが動作するモノを作りました。
そして同じものをコピペしてソケットを利用してプロジェクト間で通信を行えばよいと考えています。

内部処理としては下記のようになると思うのですが、、、
1.入力した変数をまとめてパケットに変換(ダイアログ側)
2.パケットを送信(ダイアログ側)
3.パケットを受信(処理側)
4.受信したパケットを解釈(処理側)
5.解釈したデータを計算処理(処理側)
6.計算処理結果をパケットに変換(処理側)
7.パケットを送信(処理側)
8.パケットを受信(ダイアログ側)
9.受信したパケットを解釈(ダイアログ側)
10.解釈したデータをダイアログに表示(ダイアログ側)

※通信ではafxsock.hを利用すればよいとのことでした。

投稿日時 - 2013-01-23 08:50:00

QNo.7906132

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

zwi

トリガとしてはダイアログ側が処理側にコネクトすることになるので、サーバー・クライアント型だと思います。まぁ、そんな区別はどうでもよいのですが、両方がIPアドレスを把握する必要があるので面倒なのです。片一方で済ませたいですよね?って事です。接続されたほうは相手のIPアドレスを知ることができるので返答できる仕組みにした方が良くないでしょうかぐらいの話です。

ロスト覚悟みたいですが、入力データは送れたけど計算結果が返っこないとかありますが良いのでしょうか? あるいは送ったつもりだったが実は届いていないとか。それを知る術がないのがUDPの特徴なのです。
普通は音声データとか部分的に欠けても補正できるデータとかに使います。

投稿日時 - 2013-01-25 11:43:36

ANo.1

zwi

これは別のPCとLANあるいはWANでUDP通信するということでよね?
それだと単なるサーバー・クライアントシステムだと思うのですが、そういう理解で良いのでしょうか?

それと、UDPはパケット・ロスト前提で組まないといけない通信プロトコルですが、そういう知識が十分に無いように見受けられますが大丈夫ですか?

あとサーバー側(操作側)とクライアント側(処理側)との間でどのぐらいの頻度で通信が行われるのでしょうか? WANだと1処理が100ms程度でも厳しい場合が考えられるのですが。

>そして同じものをコピペしてソケットを利用してプロジェクト間で通信を行えばよいと考えています。

まず、afxsock.hと言うことであればCSocket クラスを使いこなす必要があるのでコンソールアプリでサーバー・クライアント間の通信の実験でしょうか。

投稿日時 - 2013-01-23 15:01:00

補足

LANでUDPの通信を行いたいと思っています。
最終的にはPC間での通信を行いたいとおもいますが、まずは一つのPC内で行いたいと思います。そうすればIPアドレスとポートだけ変更することで別のPCでも同様に動作すると考えています。

私の理解では一方通行でしたらサーバー・クライアントシステムでいいと思うのですが、往復処理になるので少し理解に戸惑っていました。
ダイアログ側がサーバー?それともクライアント?1~10の流れのなかでダイアログ側からデータを入力する場合はクライアントにもなり表示の為にデータを受信する際はサーバーになるのでしょうか?

ロストはしてもかまわないと思っています。周期100msで入力データをタイムスタンプと同期して投げようと思っていますので問題ないかと思っています。

投稿日時 - 2013-01-25 09:29:31

あなたにオススメの質問