FTPの処理が、Win XPとVistaで速さが異なるのはどうして?
投稿者 ?-?  ()
投稿日時
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のトラフィックが大量にあったため遅かったとか。
そんなんだったりしない?
>
> 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を使用)
>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でファイアウォールを無効にし、ウィルスソフトも停止して実行してみたのですが、結果は同じで、時間が掛かります。
宜しくお願いします。
色々テストして分かったのですが、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の話?
VBの話?
投稿者 yama  (社会人)
投稿日時
2009/8/27 18:49:46
0-0-さん返信有難う御座います。
当方も、OSの問題なのかVBの問題なのかよく分からずにいます!
ただ、WinXPでは処理スピードが速いのに、WinVistaではどうして遅いかが知りたいと思い、Vistaで遅い原因となっているVBのプログラムの一部を掲載させて頂きました。
Vistaで実行する場合に、VBの.NET.Socketsクラス等で考慮しなければならない事や、Vista自身の設定で必要な事とかです。
また、FTPサーバーからの送受信で他に方法が御座いましたらお願い致します。
当方も、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が設定されているからおかしいとか、そういうのが原因だったら。
あと、自分では調べた?
そういうのも無くて聞かれてもね・・・
TCP/IPの設定によって、全然関係ないルータを介すようになってたら、すごい時間かかるようになってるかもしれないし。
やだよー、デフォルトゲートウェイの設定がおかしいとか、WINSが設定されているからおかしいとか、そういうのが原因だったら。
あと、自分では調べた?
投稿者 yama  (社会人)
投稿日時
2009/8/27 23:26:34
0-0-さん回答有難う御座います。
確かに、0-0-さんの仰る通りですね!
TCP/IPの設定やデフォルトゲートウェイの設定、WINSの設定等も確かめたんですが特に違いはないようです。そこで、VB2008のFTP通信処理を.NET.SocketのFtpWebRequestクラスを使って作成したプログラムでテストしたところ、スピードが速くなりました。
今、その方法で作り直しています。
0-0-さん、色々と助言を戴きまして有難う御座いました!
今後とも宜しくお願い致します。
確かに、0-0-さんの仰る通りですね!
TCP/IPの設定やデフォルトゲートウェイの設定、WINSの設定等も確かめたんですが特に違いはないようです。そこで、VB2008のFTP通信処理を.NET.SocketのFtpWebRequestクラスを使って作成したプログラムでテストしたところ、スピードが速くなりました。
今、その方法で作り直しています。
0-0-さん、色々と助言を戴きまして有難う御座いました!
今後とも宜しくお願い致します。
VB2008Expで作成した、FTPサーバーから複数ファイル(10ファイル;1ファイルが81件)を繰り返してダウンロードし削除する処理ですが、OSがWindowsXPとVistaで同じプログラムを実行すると、WindowsXPは2秒弱で終わるのに対し、Vistaは1分20秒も掛かります。(社内のLAN環境で実行;FTPサーバーのログで確認)
Vistaでは1ファイルを終了して次のファイルダウンロードまでに5秒弱位掛っているようです。XPは直ぐに次のダウンロードを行っているようです。
XPとVistaで、FTPの処理に何か違いが有るのでしょうか?
スピードの違いがどうして出るのか、何方かご教授をお願いします!