- - PR -
接続ポート指定のFTP通信
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-08-05 23:52
お世話になります。
任意のポート番号(標準の21番以外)を指定してFTPサーバへ接続したいのですが ソケットクラスではなく、FtpWebRequestクラスを使用して 実装できないでしょうか? サーバへ接続後に行う処理は、ファイル一覧やダウンロードなど ごく一般的なことなので、便利なFtpWebRequestを使用したいのですが 番号を指定する方法はないものかと・・・。 やはり、ソケットクラスで自力で実装するしかないでしょうか? | ||||
|
投稿日時: 2008-08-06 09:54
標準の21番ってことは制御ポートの事ですね。
HTTPでもFTPでも同じです。 ホスト名の最後に:ポート番号で通信ポートを指定可能です。 ftp://ftp.co.jp/ ←標準の21番使用 ftp://ftp.co.jp:12345/ ←指定の12345番使用 FtpWebRequestクラスに指定するアドレスを修正するだけで済むと思います。 *試していませんが(ぉぃ | ||||
|
投稿日時: 2008-08-06 12:56
Uriを引数にしたCreateメソッドがあります。
Uriではポートをプロパティに持っているので、こちらならいけるような気がします。 http://msdn.microsoft.com/ja-jp/library/0aa3d588(VS.80).aspx http://msdn.microsoft.com/ja-jp/library/system.uri.port(VS.80).aspx | ||||
|
投稿日時: 2008-08-06 14:52
文字列で指定した場合でも、CLR内ではURIクラスのコンストラクタに 引き渡しているだけかと思います。 ですので、どちらでもいけると思います。 文字列で渡しても、FtpWebRequestクラスの非公開メンバ変数m_Uri.Portには 文字列で指定したポート番号が設定されています。 | ||||
|
投稿日時: 2008-08-06 22:00
くまっちさん、GENZOさん
返信ありがとうございます。 おかげさまで大成功です。 ホスト名の後に「:ポート番号」を指定して サーバへ接続できることを確認いたしました。 その後、順調に開発を進めていたのですが もう一点、気になることが出てきてしまいました。 お世話になりついでで恐縮ですが、質問させてください。 接続後、前述の通りいくつかのコマンドを送信していて、 FtpWebRequest.KeepAliveプロパティを デフォルト値(true)のままにしているのですが これだと、接続が解放されるのはGCまかせなのでしょうか。 すべてのコマンドを送信したら、 明示的に接続解放する方法はあるでしょうか? | ||||
|
投稿日時: 2008-08-06 22:01
おっしゃるとおりです。失礼しました。 | ||||
|
投稿日時: 2008-08-07 09:03
MSDN-FtpWebRequest.KeepAlive プロパティ KeepAliveをtrueにした場合、他の通信(別のFtpWebRequestオブジェクト)でも その接続を再利用する為に、開放せずに残しておくということです。 最後の通信の際にはfalseに設定しClose()を呼び出せば良いのではないでしょうか。 [ メッセージ編集済み 編集者: くまっち 編集日時 2008-08-07 09:19 ] | ||||
|
投稿日時: 2008-08-07 18:44
そうですね!!そうします。 迅速且つ丁寧にご対応いただき、感謝いたします。 どうもありがとうございました。 |
1