none
ftpで海外サーバー上のファイル日時取得 RRS feed

  • 質問

  • VB2005にてFTPClientを製作中ですが、わからないことがあるので教えてください。

     

    コード ブロック

    Dim Request As System.Net.FtpWebRequest = System.Net.WebRequest.Create("ftp://。。。。。。。。/test.jpg")

    request.Credentials = New System.Net.NetworkCredential("username", "password")
    request.Method = System.Net.WebRequestMethods.Ftp.GetDateTimestamp

    Dim Response As System.Net.FtpWebResponse = Request.GetResponse

    MsgBox(Response.LastModified)

     

     

     

    このようなコードを作って試しているところです。

    自分のホームページで試してうまくいくことを確認していますが、

    海外のサーバーに対して行っても、日本時間が帰ってくるのでしょうか?

     

    自分で試すことができないのでわからない状態です。

     

    よろしくお願いします。

    2008年1月20日 15:12

回答

  • FTPWebRequestはMDTMコマンドでファイルの最終更新時刻を取得します。

    MDTMコマンドはRFC3659で定義されています。

    RFC3659 2.3によれば、時刻はすべてUTCとなっており、

    FTPWebRequestは内部でUTC表記の時刻をLocalTimeに変換しています。

     

    ですので、海外のサーバーであろうとなかろうと、

    RFC3659に準拠したFTPサーバーであれば、

    実行したPCのシステムローカルな時刻が取得されます。

     

    ただ、RFC3659はFTPのRFCとしてはかなり新しいもので、

    MDTMコマンドにしても実装が先行し、仕様は後付けです。

     

    ですので、準拠していない実装がたくさんありますし、

    設定が間違っているものなどもたくさんあります。

    時刻がどのくらいずれているのか、

    サーバー毎に設定できるようにしないと実用上は問題ありだと思います。

     

    2008年1月21日 13:08
  • ダミーのファイルをアップロードして、すぐさまに時刻を取得してみて(おおよその)時差を測る。

    そんな実装をしているFTPクライアントがあったような気がします。

    今回の場合に適用できるかどうかは分かりませんが…。

    2008年1月21日 13:28
    モデレータ

すべての返信

  • FTPWebRequestはMDTMコマンドでファイルの最終更新時刻を取得します。

    MDTMコマンドはRFC3659で定義されています。

    RFC3659 2.3によれば、時刻はすべてUTCとなっており、

    FTPWebRequestは内部でUTC表記の時刻をLocalTimeに変換しています。

     

    ですので、海外のサーバーであろうとなかろうと、

    RFC3659に準拠したFTPサーバーであれば、

    実行したPCのシステムローカルな時刻が取得されます。

     

    ただ、RFC3659はFTPのRFCとしてはかなり新しいもので、

    MDTMコマンドにしても実装が先行し、仕様は後付けです。

     

    ですので、準拠していない実装がたくさんありますし、

    設定が間違っているものなどもたくさんあります。

    時刻がどのくらいずれているのか、

    サーバー毎に設定できるようにしないと実用上は問題ありだと思います。

     

    2008年1月21日 13:08
  • れいさん、お返事ありがとうございます。

     

    詳しい解説で恐れ入ります。

    客先にも、厳密には無理でしょう、とは言ってあり、なんとか単純なミラーリング(更新日時を確認しない)の方向に

    話を持って行くようにしているところです。

     

    大変助かりました。

    2008年1月21日 13:23
  • ダミーのファイルをアップロードして、すぐさまに時刻を取得してみて(おおよその)時差を測る。

    そんな実装をしているFTPクライアントがあったような気がします。

    今回の場合に適用できるかどうかは分かりませんが…。

    2008年1月21日 13:28
    モデレータ
  • Azuleanさん、お返事ありがとうございます。

     

    確かにその方法で取得できそうですね。

     

    私の場合にしてみると、客先に原理を説明し、それで納得してもらえたならその方法で、

    ということにしたいと思います。(ちょっとは詳しそうな客なので)

     

    ありがとうございました。

     

    2008年1月21日 13:50