yuuさんはcho0さんとは別人ですよね??
2-2)や2-3)をもっと具体的にしていきましょう。
ブロードキャストに必要なデータとは何か、
定められたシーケンスとは何かといったことを
整合がとれるように組み立て詳細を決定していってください。
具体的な手順は
通りすがりさんやんーさんの発言を参考にしてみてください。
設計がようやくできました。
必要な部分だけ抜粋しておきます。その上で質問させていただきたいと思います。
ブロードキャストを行うためにすること
1.LAN内なのでメールスロットを使う
1-1 メールスロットの設定をローカルからブロードキャストの設定に変更
1-1-1 \\.\mailslot\path名(ローカル)→\\*\\mailslot\path名(ブロード)
2.受信側での処理
2-1 メッセージが来たことを自動的に取得
3.送り返す
3-1 1.を流用
4.送信画面に表示
4-1.返信された相手のホスト名を取得
4-2.取得したホスト名をリストボックスの中に格納
こんな感じになりました。
ここでわからないのは、
1)1-1-1で、ローカルからブロードに代えてもメッセージが届かない
2)2-1の自動取得の方法
誰かが勝手に終了したので、名前を変えます。cho0からcho1にします
*つきのMailSlotでは一度に424バイトを超えるデータを書き込めません。
この辺が影響していないか確認してください。
メールスロットを開いて非同期でReadFileを行い、
メッセージ受信時にイベントをシグナルにしてやればよさそうな気がします。
試してないのでなんともいえませんが。。。
①非同期でReadFileを行う
②メッセージ受信時にイベントをシグナルする
こんな感じでしょうか?
①. 1-1) WSAAsynSelect関数を使って、非同期モードにする
1-1-1) このとき、lEventにて、FD_READを設定
②. 手順がわかりません。
> ①. 1-1) WSAAsynSelect関数を使って、非同期モードにする
> 1-1-1) このとき、lEventにて、FD_READを設定
ReadFileするといっているのはMailSlotについてでソケットについてではありません。
非同期でReadFileするには最後の引数にOVERLAPPED構造体のポインタを渡すことで
非同期読み取りが行えます。
詳しくはMSDNを見てください。
非同期読み取りにはイベントを使うことができますので②のやりかたは
非同期ReadFileのやり方がわかれば一緒にわかると思います。
MSDNをみても、理解ができないので、アドバイスをください。
bErr = ReadFile(//メール受信チェック
hMailslot,
szBuff,
sizeof(szBuff)-1,
&dwReaded,
NULL);←ここをOVERLAPPED構造体に変更すればよいのですか?
yuuさんのスレは↓ですよ。
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200605/06050028.txt
別の方のスレに混じって質問されると混同してしまいますので
新規にスレを立てて投稿したほうが良いです。
また、cho0さんのスレを勝手に閉じたことに対して
一言くらい弁解があっても良いと思うのですがいかがでしょうか?
> MSDNをみても、理解ができないので
何が理解できないのですか?
それを説明しないと適切なアドバイスもくそもありません。
具体的な使い方はGoogleで「ReadFile OVERLAPPED」や「ReadFile OVERLAPPED
CreateEvent」で検索してみてください。
kureさん、いろいろとありがとうございます。
みなさん、無事解決いたしました。
いろいろとありがとうございました。