ブロードキャストを使った相手先に特定について教えてください – プログラミング – Home

ブロードキャストを使った相手先に特定に...
 
通知
すべてクリア

[解決済] ブロードキャストを使った相手先に特定について教えてください

固定ページ 1 / 2

cho0
 cho0
(@cho0)
ゲスト
結合: 19年前
投稿: 7
Topic starter  

はじめまして、どうしてもわからないのでよいアドバイスをお願いします。
 ただいま、IPメッセンジャーを作ろうとしています。UDPのブロードキャストを使っ
て、相手先のマシンが動いているかを判断したいのですが、方法がわかりません。
何か参考のできるサイトはありますか?

環境は、windowsXP,言語はVC++.net, MFCは使用していません。


引用未解決
トピックタグ
んー
 んー
(@んー)
ゲスト
結合: 19年前
投稿: 14
 

相手に受け取ったら返事を投げ返してもらって
一定時間内に一度も応答がなければ動いていないと判断するとか


返信引用
cho0
 cho0
(@cho0)
ゲスト
結合: 19年前
投稿: 7
Topic starter  

返答ありがとうございます。
相手に受け取ったら返事投げ返してもらうということなんですが、
具体的にプログラムソースとして、どんなことをすればよろしいのでしょうか?

なにぶん勉強不足で、申し訳ありません。
よろしくお願いします。


返信引用
REE
 REE
(@REE)
ゲスト
結合: 23年前
投稿: 240
 

具体的にプログラムソースを書く前に
具体的な仕様をきめましょう。


返信引用
cho0
 cho0
(@cho0)
ゲスト
結合: 19年前
投稿: 7
Topic starter  

 IPメッセンジャーを使って相手にメッセージを送るために、相手のマシンが動いてい
たら、相手のIPアドレスとホスト名を表示させるようにしたい。動いていなければ、表
示しないようにしたいです。


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

> 表示しないようにしたいです。

「したいです」というのは、要求ですね。
それを元に「どのようにするか」が仕様、そして仕様を決めるのが設計。
これがプログラマ(SEとか別のなで呼ぶ人もいますが)のするべき作業であり、
cho0 さんの後でのお楽しみです。
ソースうんぬんは、少なくともどうやるか(仕様)が決まった後の話です。

詳しい人に実現の可否とかもろもろ相談するのはいいことですが、
設計もせずにいきなりソースの書き方を聞いてしまうのでは設計を放棄していますし、
勉強不足は解消されません。


返信引用
cho0
 cho0
(@cho0)
ゲスト
結合: 19年前
投稿: 7
Topic starter  

表示させるために、UDPのブロードキャストを使い、相手にバケットが届いたら相手のIP
アドレスとホスト名を返してもらい、それを送った方にそのホスト名を表示させる。
相手にパケットが届かなかったら、送った方にはなにも表示されない。


返信引用
kure
 kure
(@kure)
ゲスト
結合: 19年前
投稿: 48
 

ちょっとだけ。

> ソースうんぬんは、少なくともどうやるか(仕様)が決まった後の話です。

仕様を決める前(設計をする前)に技術調査ってフェイズがあったりもします。
時間がないと大抵は設計と一緒になっちゃうんですけどね^^;

cho0さんの場合は、
技術調査と設計をすっ飛ばして実装だけしか考えてないって状況です。
まずはUDP/IPの特性を理解するというあたりから手をつけたほうが自身のためになりま
す。

その上で実装で判らないことがあれば相談してみてください。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

> 送った方にはなにも表示されない。
表示非表示とおっしゃっていますが、それはどの画面に対してでしょうか?

> UDPのブロードキャストを使い
を行うタイミングは?


返信引用
REE
 REE
(@REE)
ゲスト
結合: 23年前
投稿: 240
 

方針が決まったのでしたら、
実装するのに必要な具体的な仕様をきめましょう。

決める内容の例:ポート番号、パケットのフォーマット、etc.


返信引用
cho0
 cho0
(@cho0)
ゲスト
結合: 19年前
投稿: 7
Topic starter  

IPメッセンジャーを立ち上げたとき(最初の画面)に、相手先のパソコンが同じものを
立ち上げているかどうかです。 立ち上げていなければ非表示、立ち上げていれば、相
手のホスト名を表示させる。

UDPを使うタイミングは、IPメッセンジャーを立ち上げたときです。


返信引用
kure
 kure
(@kure)
ゲスト
結合: 19年前
投稿: 48
 

やりたいことをもっと細分化して詳細を決定していきましょう。

例えば

>IPメッセンジャーを立ち上げたとき(最初の画面)に、相手先のパソコンが同じものを
>立ち上げているかどうかです。 立ち上げていなければ非表示、立ち上げていれば、相
>手のホスト名を表示させる。

これは以下のようになります。

1)IPメッセンジャーを立ち上げる。
2)UDPブロードキャストで相手の状態を調べる
3)2)の結果、ホスト名を画面に表示

さらに細分化すると

1) IPメッセンジャーを立ち上げる。
1-1) メインWindowの作成
1-2) 必要なコントロールの作成と配置
2) UDPブロードキャストで相手の状態を調べる
2-1) UDPソケットの作成(WindowsであればWinSockの初期化を含む)
2-2) ブロードキャストに必要なデータを作る
2-3) 定められたシーケンスで相互通信を行う
3) 2)の結果を画面に表示
3-1) 2)の結果を保持しているデータを読み込む
3-2) フォーマットしてホスト名を画面に出力

といった感じになります。

こんな感じでどんどん細分化して設計を行っていきましょう。
そうしていけば自ずとREEさんのおっしゃっている

> 決める内容の例:ポート番号、パケットのフォーマット、etc.

といった事柄も決めなければならなくなっていきます。


返信引用
通りすがり
 通りすがり
(@通りすがり)
ゲスト
結合: 24年前
投稿: 92
 

特定の相手が生きてるかじゃなくて不特定多数のクライアントの生存確認なら

↓こんなのとか
各々が定期的にブロードキャストで生存通知パケットを投げて、
それを受け取ったクライアント側は通知の来たマシンを一覧として列挙してリスト表示す
る。
一定時間以上生存通知パケットが来ないクライアントは終了されたとみなしてリストから
削除する。

クライアント数が増えたら大変だろうけど…


返信引用
cho0
 cho0
(@cho0)
ゲスト
結合: 19年前
投稿: 7
Topic starter  

2) UDPブロードキャストで相手の状態を調べる
2-1) UDPソケットの作成(WindowsであればWinSockの初期化を含む)
2-2) ブロードキャストに必要なデータを作る
2-3) 定められたシーケンスで相互通信を行う

3) 2)の結果を画面に表示
3-1) 2)の結果を保持しているデータを読み込む
3-2) フォーマットしてホスト名を画面に出力
3-3) ホスト名をリストボックスの中にいれる
4) 相手に送信する
 4-1 3)のあて先を選ぶ
 4-2 メッセージを入力する
 4-2-1 エディタボックスに書き込む
 4-3 TCP/IPを利用して、相手にメッセージを送る

4に関してはほとんどできています。
 


返信引用
yuu
 yuu
(@yuu)
ゲスト
結合: 23年前
投稿: 11
 

なんとか解決できました。どうもありがとうございました。


返信引用
固定ページ 1 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました