|
|||||
1.FTPサーバのタイムスタンプは秒が省略されている。 2.FTPサーバの種類によっては年月日時分の一部を省略する事がある。 3.IE(FTP用API)の不具合でタイムスタンプを正しく解釈出来ない事がある。 (検証1) Windows形式とUNIX形式では返ってくる情報が違う。 UNIX形式では年や時分が省略されるので最悪。 以下の詳細説明を参照してください。 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− コマンドプロンプトでdirした時に表示されるファイルの情報 2008/09/20 09:34 311 a.txt 2007/12/22 05:01 310 b.txt この2つのファイルをFTP経由でリスト取得すると... (FTPでLISTコマンドと送った時にのレスポンス文字列) FTPサーバがIISの場合(Windows形式) 09-20-08 09:34AM 311 a.txt 12-22-07 05:01AM 310 b.txt 年が2桁に省略されていますが、日付情報が正しく取得出来ます。 FTPサーバがBlackJumboDogの場合(UNIX形式) -rwxrwxrwx 1 nobody nogroup 311 Sep 20 09:34 a.txt -rwxrwxrwx 1 nobody nogroup 310 Dec 22 2007 b.txt 今年(2008年)のファイルは年の情報が省略されています。 前年(2007年)のファイルには時分の情報が省略されています。 TCP/IPで送受信されるパケットに情報が入っていないと言う事は、 どんなに優れたFTPツールでも正確な日付を解釈する事は出来ません!! −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− (検証2)WININETのみ WININETのバージョンによっては、UNIX形式の日付情報を誤って解釈する事があります (WININETとはIEで使用しているDLLのようで、IEのリスト表示も同様に誤っていました)。 IE6 Sp2では今日作ったファイルを1年前のファイルとしてリスト表示しました。 Microsoft ではこの問題を認識済みでIE6 Sp1で対応済みとしていますが、 うまく動いていないIE6 Sp2もあります。ちなみにIE7 では問題ないようでした。 (検証3)WININETのみ? ソラリスのFTPサーバを日本語モードで起動するとWININETで日付情報の取得が出来ません。 英語モードで起動したFTPサーバのみ日付情報が取得出来ます。送られてくる情報の形式が 違う事が理由です。ソラリスのFTPサーバを英語モードで起動するためには/etc/inetd.conf のFTPの定義を以下のような感じ(バージョンによる...?)で変更する必要があります。 (日本語モード)ftp stream tcp6 nowait root /usr/sbin/in.ftpd (英_語モード)ftp stream tcp6 nowait root /usr/bin/env env LANG=C /usr/sbin/in.ftpd <FTPのサンプルソース> FTP(File Transfer Protocol)送受信のサンプル(VB6) FTP(File Transfer Protocol)送受信のサンプル(VB.NET) |