GetFtpConnection(~)がタイムアウトしてしまいます。
GetFtpConnection(~)がタイムアウトしてしまいます。
C++のプログラム操作から、FTPを利用してサーバ上のファイルをダウンロードする処理を構築中です。
とりあえずの練習用にと「AnHTTPD」を導入しました。
VisualStudioのWin32コンソールアプリケーションから、GetFtpConnectionで自家サーバに接続しようとしたところ、関数の処理内で先に進まなくなってしまい、そのうちに「処理がタイムアウトになりました」というメッセージボックスがあらわれます。元々20秒だったタイムアウトの設定を60秒にしてみましたが結果は変わらず、接続に時間がかかっているだけだというわけでもないようです。
ひょっとすると、ネット上に存在するFTPサーバに対する接続を、ローカルで行おうとしていることから起きている問題なのかもとは思うものの、それが正しいのか、正しいとしてどうすれば良いのかまったく見当もつかないでいます。
以下、FTPダウンロード検証用に試作中の・・・というのもお恥ずかしいプログラムです。
まったくのゼロからの開発中ですので、問題点の指摘や改善へのご指南を、どうかひとつお願いいたします。
////////////////////////////////////////////
#include <afxinet.h>
int main()
{
CFtpConnection *pConn = NULL;
char *lpszServerName = "210.250.71.132";
//CInternetSessionのインスタンス作成
CInternetSession session( "My FTP Session" );
//CFtpConnectionオブジェクトの作成
try
{
pConn = session.GetFtpConnection( lpszServerName,0,0,0, TRUE );
}
catch( CInternetException *ep )
{//エラー
ep->ReportError();
ep->Delete();
}
//取得
char *pstrRemoteFile = "C\\homepage\\test";
char *pstrLocalFile = "C\\TEST_DL.txt";
if( !pConn->GetFile( pstrRemoteFile, pstrLocalFile, FALSE,
FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_BINARY, 1 ) )
{
MessageBox( NULL, "ファイルの取得に失敗", "FPS_GetFile", MB_OK|MB_ICONHAND );
}
pConn->Close();
session.Close();
return 0;
}
//////////////////////////////////////////
補足
そうなんです。いつも「そろそろ時間かかっちゃうころだな」って時に強制的に切断して、再接続しています。するとすんなりアップロードできます。しかし毎回毎回切断→再接続の動作をするのも億劫です。これはDWの仕様なのでしょうか?設定方法はありませんか?