トップページ > 過去ログ > 記事閲覧
TCP接続関係
名前:GT 日時: 2011/12/28 15:44

ConnectNetWork関数の戻り値についてですが、接続できないIPに対してConnectNetWorkを行った場合に、 エラーである-1以外の数値が帰ってくるのですが戻り値としては正しいものなのでしょうか? また正しく接続できる設定時に、直下でGetNetWorkAcceptStateにて接続確認を行った場合、 未接続の結果が返ってきたのに実際には接続されていたりといったことが起きるようです 環境:VC++10 DxLib:最新のtest版 以下再現コード #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){ IPDATA Ip ; int NetHandle ; bool UseServerMode = true;//送信側、受信側切り替え char str[256]; ChangeWindowMode(true); SetDoubleStartValidFlag( TRUE ); if( DxLib_Init() == -1 )return -1; Ip.d1 = 192 ; Ip.d2 = 168 ; Ip.d3 = 1 ; Ip.d4 = 8 ; if(UseServerMode){//サーバ処理 PreparationListenNetWork( 9850 ) ; while( !ProcessMessage() && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ){ NetHandle = GetNewAcceptNetWork() ; if( NetHandle != -1 ) break ; } StopListenNetWork() ; if(NetHandle != -1 ){ //ちゃんと接続になる sprintf(str,"接続中:%d",NetHandle); MessageBox(NULL,str,"DebugInfo",MB_OK); } else{ sprintf(str,"未接続:%d",NetHandle); MessageBox(NULL,str,"DebugInfo",MB_OK); } } else{//クライアント処理 NetHandle = ConnectNetWork( Ip, 9850 ) ; if(NetHandle == -1)MessageBox(NULL,"TCP接続失敗","DebugInfo",MB_OK);//すり抜ける else{ if(GetNetWorkAcceptState(NetHandle)==1){ sprintf(str,"接続中:%d",NetHandle); MessageBox(NULL,str,"DebugInfo",MB_OK); } else {//何故かこっちに入る sprintf(str,"未接続:%d",NetHandle); MessageBox(NULL,str,"DebugInfo",MB_OK); } } } DxLib_End(); return 0; }

Page: 1 |

Re: TCP接続関係 ( No.1 )
名前:管理人 日時:2012/01/01 03:52

ご報告ありがとうございます 以前非同期接続用に ConnectNetWork_ASync という関数を追加したのですが、 その関数と効果が逆に、つまり ConnectNetWork が非同期接続( 接続確立を待たない )で ConnectNetWork_ASync が同期接続( 接続確立まで待つ )になってしまっていました orz GetNetWorkAcceptState の現象も効果が逆になっていたことが原因でした その点を修正して載せていただいたプログラムも正常に動作することを確認した バージョンをアップしましたので、よろしければお試しください 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 // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMinGWTest.exe // MinGW 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
Re: TCP接続関係 ( No.2 )
名前:GT(解決) 日時:2012/01/04 03:03

遅くなりました こちらでも正常動作を確認することが出来ました お忙しい時期に対応していただきありがとうございます

Page: 1 |