#mingw版でrfc.ftpが動かないらしいとの情報を得て試してみようと思ったが試せるftpサーバがすぐに思いつかない。自分の管理サイトではftpd走らせてないし… どっかのanon ftpを見ればいいのか。
##ども。でもネットワーク回りは最近ほとんど変わってないはず…
#(use rfc.ftp)
(define ftp-connect
(lambda ()
(call-with-ftp-connection "foo.fooooooooo.jp" proc
:port 21
:passive #t
:username "baaaaaaaa"
:password "xxxxxxxxx")
(display "finish")
(newline)))
(define proc
(lambda (dummy)
(display "connected")
(newline)))
(ftp-connect)
#ソースがこれです。
##VirtualBoxの中のUbuntuで実行すると、この画像のようにconnectedとfinishが表示されてプログラムが終了します。
#c:\home\tmp>gosh -V
Gauche scheme shell, version 0.9.3 [utf-8,wthreads], i686-pc-mingw32
c:\home\tmp>gosh ftpc.scm
^C
c:\home\tmp>
#DOS窓で同じファイルを実行すると、カーソルが点滅したまま何も表示されなくなります。OSは64bit windows7です。
#手元のVistaでanonymous accessで試したところ少なくともcall-with-ftp-connectionのコールバックは呼ばれてるので、ユーザ名/パスワード指定があるとまずいんですかね。
#c:\Windows\System32\ftp.exe を使って、foo.fooooooooo.jp に相当するところにアクセスするとログインできます。
#natsutanさんのとこでもanonymous accessはできますか?
#anonymous acces とは具体的にどこにアクセスすれば良いのでしょうか。
#そうですね… ftp.gnu.org とか。:usernameと:passwordをつけずに試してみてください。
#(use rfc.ftp)
(define ftp-connect
(lambda ()
(call-with-ftp-connection "ftp.gnu.org" proc
; :port 21
; :passive #t
; :username "anonymous"
; :password ""
)
(display "finish")
(newline)))
(define proc
(lambda (dummy)
(display "connected")
(newline)))
(ftp-connect)
#Window7だと何も表示されず、Ubuntuだとgosh: "ftp-error": 530 Login incorrect.と表示されてプログラムが終了します。
#あれ。私はREPLから直接call-with-ftp-connection打ったんですが、もしかしてスクリプトだと違いが出るのかな。
#あっ、それはすぐに試せます。
#うちだとスクリプトでUbuntuからつないでconnectedになりました。何が違うんだろう。proxyか何か噛んでいます?
#あっ、ごめんなさい。Ubuntuの方はconnectedなります。私がファイル間違えてました。
#了解。こっちのVistaでもスクリプトでやってみよう。
#Windows7の方は、REPL経由でも同じです。
#むー、スクリプトでも動きますねぇ>Vista。何か許可されたプログラム以外からの接続を制限する仕組みとかがonになってるとか?
#アンチウィルスは切ってあります。それくらいしか思い浮かびません。
#家に帰ると同じ64bit Window7のPCがあるので、E-Mobile経由でtryしてみます。
#Windows Firewallの設定とかかな。
#anonymous ftpと言われて、どこでも良いと分かっていても、どこも出てこなかったのが悲しかった。
#動かないPC上のXP modeだとanonymous access出来てます。このPCの環境に問題有りそうですね。
#Win7/64 MinGW環境で./DIST mingwでビルド(--enable-threads=win32)してみたバイナリでスクリプト実行してみましたが、connectedになりますね。
#家のPC(Windows7/64bit)だと、mingw版でconnectedなりますね。
#ということは、動かないPC固有の問題なので、アンチウィルスソフトか、ファイヤーウォールか、その辺りをもう一度調べてみます。