- - PR -
c#:SocketでのFTP通信について
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2009-03-05 18:22
いつも参考にさせていただいています。初めて投稿します。
以下現象で困っています。 使用言語:VisualStudio2005 C#(CompactFramework2.0) CASIOのD-5200で実行しています。 FTPはSocket ループで連続でFTPのGetを実行すると >ftpRecvSocket.Connect(ep); で「対象のコンピュータによって拒否されたため、接続できませんでした。」 とエラー表示される。 以下ロジックの一部抜粋 IPEndPoint ep = null; Socket ftpRecvSocket = null; ftpRecvSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); ep = new IPEndPoint(IPAddress.Parse(ipAddress), portNumber); ftpRecvSocket.Connect(ep); ファイルサーバー側のnetstatで確認するとエラーが発生している場合 一覧に表示されません。 正常に接続される場合は一覧に出てきます。 発生するファイル、取得回数目が毎回違うことと、PDA上からではなく、Framework2.0 でも同様に発生するのでFTPサーバー側なのかと予想していますが原因がわかりません。 ※サーバー側のウィルスバスターは切ってあります。 何か解決する方法ありませんでしょうか? CompactFramework2.0でもTCPClientが使えることを知らずにSocketで作成していましたが TCPClientで作成しなおしてみようとは思いますが、根本の原因がわからないので 何かヒントをいただけませんか? 処理概要は FTP接続 LOGIN→GET→GET・・・→切断 GETはループで繰り返し実行 以下命令と返答のログ 返答220 Microsoft FTP Service 命令:USER YYYY 返答331 Password required for tlds37. 命令:PASS PPPP 返答230 User YYYY logged in. 命令:TYPE I 命令:PASV 返答200 Type set to I. 命令:RETR 01.xml 返答125 Data connection already open; Transfer starting. 返答226 Transfer complete. 命令:PASV 返答200 Type set to I. 命令:RETR 02.xml 返答125 Data connection already open; Transfer starting. 返答226 Transfer complete. 命令:PASV 返答200 Type set to I. 命令:RETR 03.xml 返答125 Data connection already open; Transfer starting. 返答226 Transfer complete. 命令:PASV 返答200 Type set to I. 命令:RETR 04.xml 返答125 Data connection already open; Transfer starting. 返答226 Transfer complete. 命令:PASV 返答200 Type set to I. 命令:RETR 05.xml 返答125 Data connection already open; Transfer starting. 返答226 Transfer complete. 命令:PASV 返答200 Type set to I. 対象のコンピュータによって拒否されたため、接続できませんでした。 命令:RETR 06.xml 返答425 Can't open data connection. 06.xmlダウンロード失敗 命令:PASV 返答200 Type set to I. 命令:RETR 07.xml 返答125 Data connection already open; Transfer starting. 返答226 Transfer complete. 命令:QUIT | ||||||||||||
|
投稿日時: 2009-03-06 11:04
こんにちは。
もしかして"DT-5200"の間違いでしょうか? http://casio.jp/ht/dt5200/
passiveモードのデータコネクションのことでしょうか?
なぜ拒否されるのかは分からないですが、(ファイアウォールは完全に無効?) データコネクションが特定のポートのときだけ接続が拒否されているということですよね? 拒否されたときは、もう一度PASVを送ってで別ポートにてリトライすれば良いのでは? | ||||||||||||
|
投稿日時: 2009-03-06 13:15
返答ありがとうございます。
DT-5200の間違いでした。 確かにエラーが発生した場合リトライするべきですね。 ただネットワークについての知識が不足しているため 結構な頻度で拒否されるため、FTPとはエラーがよく出るものなのか それともエラーがよく発生することが異常なのか不明であったため 質問をいたしました。 | ||||||||||||
|
投稿日時: 2009-03-06 13:34
ファイアーウォール、ウィルスバスター等は外しています。
| ||||||||||||
|
投稿日時: 2009-03-06 19:34
「対象のコンピュータによって拒否された」のとおり
一定時間経過したらファイルサーバ側が切る設定とかはないですか |
1