トップページ > 過去ログ > 記事閲覧
PreparationListenNetWorkで切断検出
名前:hiryuh 日時: 2011/07/16 17:40

超お久しぶりです。 昔、DXLIBで「みしょみしょ」というゲームを作ったGRCのhiryuhです。 今、パズルゲームの通信のプログラムを組んでみようと思って、 久々にDXLIBを触っているのですが、 ちょっと不可解な現象が起きました。 ポート 5555 IP 127.0.0.1 でローカルで通信のテストを行っているのですが、 PreparationListenNetWork をしたのと同じフレームで、 GetLostNetWorkでハンドルを検出しまうのです。 一度GetLostNetWorkを空実行すると、 あとの処理はうまくいくようです。 そのハンドルをCloseNetWorkしてしまうと、 その後の通信がうまくいかなくなることがわかっています。 切断を検出し次第タイトルに行くようにしているので 、 空実行をいれないと、 親の通信待機画面に入った瞬間にタイトルに戻って、 堂々巡りになってしまいます。 空処理を入れることによって問題は起こらなくなっているのですが、ちょっと気持ち悪いです。 なにか解決策はありますでしょうか?

Page: 1 |

Re: PreparationListenNetWorkで切断検出 ( No.1 )
名前:いっち 日時:2011/07/17 02:29

私の環境でも事象確認しました。 PreparationListenNetWork から StopListenNetWork の間で GetLostNetWork を行うと 初回のみ謎のハンドルが返ってくるようです。 //- 以下、テストコード -// #include "DxLib.h" int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int ) { ChangeWindowMode( TRUE ); SetWindowText( "DxLib:" DXLIB_VERSION_STR ); if ( DxLib_Init( ) == -1 ) return -1; int white = GetColor( 255, 255, 255 ); int r1 = 0, r2 = 0, r3 = 0, r4 = 0; r1 = GetLostNetWork( ); PreparationListenNetWork( 9850 ); r2 = GetLostNetWork( ); r3 = GetLostNetWork( ); StopListenNetWork( ); r4 = GetLostNetWork( ); SetDrawScreen( DX_SCREEN_BACK ); while ( ProcessMessage( ) == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) { ClearDrawScreen( ); DrawFormatString( 0, 0, white, "TEST r1=%d r2=%d r3=%d r4=%d", r1, r2, r3, r4 ); ScreenFlip( ); } DxLib_End( ); return 0; }
Re: PreparationListenNetWorkで切断検出 ( No.2 )
名前:管理人 日時:2011/07/17 05:18

お久しぶりです! 「みしょみしょ」を発表されたのは4年前なんですね ちょっと前のことのような、すごく昔のことのような・・・ PreparationListenNetWork の直後に GetLostNetWork を使用すると 不正な値が返ってくるのは完全にバグです、申し訳ありません orz こちらに修正したバージョンをアップしましたので、 よろしければお試しになってみてください m(_ _;m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCCTest.exe // Gnu C++ 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) > いっちさん 再現用テストコードのご提供ありがとうございます 直ぐに原因を突き止めることができました m(_ _)m
Re: PreparationListenNetWorkで切断検出 ( No.3 )
名前:hiryuh 日時:2011/07/20 02:42

4年ですかー。 ともあれ当時はお世話になりました。 僕の環境でテスト版のライブラリを試してみて、 無事不具合の修正が確認できました。 ありがとうございます。 今回もお世話りなりました! いつになるかはわかりませんが、 またDXLIBで何か完成させた際にはご連絡させていただきます。 (今回作ったパズルゲームは オリジナルとは言えない習作なので、 公開するかどうか悩んでいます。) それでは、迅速な対応ありがとうございました!

Page: 1 |