FTPの処理が、Win XPとVistaで速さが異なるのはどうして?

タグの編集
投稿者 yama  (社会人) 投稿日時 2009/8/26 18:49:36
お世話になっております。

VB2008Expで作成した、FTPサーバーから複数ファイル(10ファイル;1ファイルが81件)を繰り返してダウンロードし削除する処理ですが、OSがWindowsXPとVistaで同じプログラムを実行すると、WindowsXPは2秒弱で終わるのに対し、Vistaは1分20秒も掛かります。(社内のLAN環境で実行;FTPサーバーのログで確認)
Vistaでは1ファイルを終了して次のファイルダウンロードまでに5秒弱位掛っているようです。XPは直ぐに次のダウンロードを行っているようです。
XPとVistaで、FTPの処理に何か違いが有るのでしょうか?
スピードの違いがどうして出るのか、何方かご教授をお願いします!
投稿者 ?-?  () 投稿日時 2009/8/26 20:51:18
> お世話になっております。

> VB2008Expで作成した、FTPサーバーから複数ファイル(10ファイル;1ファイルが81件)を繰り返してダウンロードし削除する処理ですが、OSがWindowsXPとVistaで同じプログラムを実行すると、WindowsXPは2秒弱で終わるのに対し、Vistaは1分20秒も掛かります。(社内のLAN環境で実行;FTPサーバーのログで確認)
> Vistaでは1ファイルを終了して次のファイルダウンロードまでに5秒弱位掛っているようです。XPは直ぐに次のダウンロードを行っているようです。
> XPとVistaで、FTPの処理に何か違いが有るのでしょうか?
> スピードの違いがどうして出るのか、何方かご教授をお願いします!

XPとVistaのマシンは同じマシンにそれぞれのOSを入れていますか?
それと、入っているソフトはまったく同じですか?(セキュリティ対策ソフトとか)
また、ファイアウォールも同じ設定ですか?
そして、テスト時に使っているLAN回線は同じですか?(別のHUB使ってたりとかしてませんか?)

条件が同じであれば、それなりの回答が来ると思いますが、マシンのスペックが違うとかならそれが原因じゃないの?
XPにはセキュリティ対策してないとか、Vistaはガッチガチにセキュリティ対策してるとか。
テストしたときに、Vista側のHUBのトラフィックが大量にあったため遅かったとか。
そんなんだったりしない?
投稿者 yama  (社会人) 投稿日時 2009/8/26 22:30:30
回答有難う御座います。

>XPとVistaのマシンは同じマシンにそれぞれのOSを入れていますか?
>それと、入っているソフトはまったく同じですか?(セキュリティ対策ソフトとか)
>また、ファイアウォールも同じ設定ですか?
>そして、テスト時に使っているLAN回線は同じですか?(別のHUB使ってたりとかしてませんか?)

質問が説明不足で申し訳有りませんでした。
ご指摘の点ですが、
マシンは別々です。Vistaのマシンは格段にスペックが上です。(メモリー:2GB,CPU:Celeronの2.0GHZ)XPのマシンは、メモリー:250MB,CPU:Celeronの1.50GHZです。
セキュリティーソフトは、どちらにもフリーのAVG8.5をいれてます。ファイアウォールも同じです。
また、LAN回線やHUBも同じ環境です。

FTPクラスは、VB2003(VB.NET)の時に作ったもので、インターネットからサンプルプログラムをダウンロードして作ったものを、VB2008へ変換して作りました。(System.Net.Socketsを使用)
投稿者 yama  (社会人) 投稿日時 2009/8/27 02:42:45
前回の追記です。

色々テストして分かったのですが、Vistaではソケットでのコネクションに時間が掛っています。

Imports System.Net.Sockets
    : 省略
'-----  ログイン コントロールコネクションの確立  -----
Private ControlConnectionSocket As Socket   'コントロールコネクション用ソケット
ControlConnectionSocket = New Socket(AddressFamily.InterNetwork, _
                                     SocketType.Stream, _
                                     ProtocolType.Tcp)
Dim EP As New IPEndPoint(Dns.GetHostEntry(_remoteHost).AddressList(0), _remotePort)
Try
    ControlConnectionSocket.Connect(EP)   '←ここで時間が掛かります
Catch Ex As Exception
    MessageString = Ex.Message
    MessageBox.Show(MessageString, "サーバーにログイン出来ませんでした!")
    Return False
End Try
    : 省略  
また、データコネクションでも時間がかかります
'----- ファイルをダウンロードする
Public Function DownloadFile(ByVal ServerFileName As String, _
                             ByVal LocalFileName As String, _
                             ByVal ResumeSW As Boolean) As Boolean
Dim DownloadFileFS As FileStream    'クライアント側ファイルFileStream
Dim DataConnectionSocket As Socket  'データコネクション用ソケット
Dim Offset As Long                  'レジューム処理時の開始位置

'-----  クライアント側ファイルが存在しない場合、空ファイルを作成する。
If (Not (File.Exists(LocalFileName))) Then
         DownloadFileFS = New FileStream(LocalFileName, FileMode.CreateNew)
         DownloadFileFS.Close()
End If
'-----  クライアント側ファイルのOpen  -----
DownloadFileFS = New FileStream(LocalFileName, FileMode.Open)
'-----  データコネクションの確立  -----
DataConnectionSocket = CreateDataSocket()    '← ここで時間がかかります
    : 省略
XPでは、コネクションの確立は直ぐですが、Vistaではどうして時間が掛かるのか不思議でなりません!!
因みに、Vistaでファイアウォールを無効にし、ウィルスソフトも停止して実行してみたのですが、結果は同じで、時間が掛かります。
宜しくお願いします。
投稿者 0-0-  (その他) 投稿日時 2009/8/27 17:43:54
OSの話?
VBの話?
投稿者 yama  (社会人) 投稿日時 2009/8/27 18:49:46
0-0-さん返信有難う御座います。

当方も、OSの問題なのかVBの問題なのかよく分からずにいます!
ただ、WinXPでは処理スピードが速いのに、WinVistaではどうして遅いかが知りたいと思い、Vistaで遅い原因となっているVBのプログラムの一部を掲載させて頂きました。
Vistaで実行する場合に、VBの.NET.Socketsクラス等で考慮しなければならない事や、Vista自身の設定で必要な事とかです。
また、FTPサーバーからの送受信で他に方法が御座いましたらお願い致します。
投稿者 0-0-  (その他) 投稿日時 2009/8/27 20:16:42
VBの問題なら、同じようなことを他のFTPソフトなどでやってみればどちらかの推測が立つんじゃない?
そういうのも無くて聞かれてもね・・・
TCP/IPの設定によって、全然関係ないルータを介すようになってたら、すごい時間かかるようになってるかもしれないし。
やだよー、デフォルトゲートウェイの設定がおかしいとか、WINSが設定されているからおかしいとか、そういうのが原因だったら。

あと、自分では調べた?
投稿者 yama  (社会人) 投稿日時 2009/8/27 23:26:34
0-0-さん回答有難う御座います。

確かに、0-0-さんの仰る通りですね!
TCP/IPの設定やデフォルトゲートウェイの設定、WINSの設定等も確かめたんですが特に違いはないようです。そこで、VB2008のFTP通信処理を.NET.SocketのFtpWebRequestクラスを使って作成したプログラムでテストしたところ、スピードが速くなりました。
今、その方法で作り直しています。

0-0-さん、色々と助言を戴きまして有難う御座いました!
今後とも宜しくお願い致します。