除了OTP庫中的httpc
以外,Erlang至少還有兩個HTTP客戶端庫(它似乎一般被認爲是越野車和笨重的):ibrowse
和lhttpc
。是否有類似的替代ftp
?Erlang的替代FTP客戶端庫
6
A
回答
3
我意識到這是一個老問題,但希望其他人會發現這個有用:
是一個「輕量級二郎FTP客戶端」我們一直在生產中使用該lhttpc和dlhttpc仿照在過去6個月左右。
它不是非常有據可查的權利,但在這裏是用test.rebex.net
一個例子:
1> lftpc:start().
ok
2> {ok, {_, _, Socket}} = lftpc:connect("test.rebex.net", 21, []).
{ok,{undefined,{220,[<<"FTP on test.rebex.net ready...">>]},
<0.65.0>}}
3> lftpc:login(Socket, [{username, <<"demo">>}, {password, <<"password">>}], infinity, []).
{ok,[{undefined,{331,[<<"Password required for demo.">>]},
undefined},
{undefined,{230,[<<"User demo logged in.">>]},undefined}]}
4> lftpc:cd(Socket, <<"pub">>, infinity, []).
{ok,{undefined,{250,
[<<"CWD command successful. \"/pub\" is current directory.">>]},
undefined}}
默認情況下,沒有用於控制或數據連接解碼器。所以,當我們列出包含2個文件的目錄:example
和test
我們回來:
5> lftpc:nlist(Socket, infinity, []).
{ok,{{150,
[<<"Data connection accepted from 173.198.175.141:53504; transfer starting.">>]},
{226,[<<"Transfer ok.">>]},
[<<"example\r\ntest\r\n">>]}}
我們可以指定一個data_decoder
:
6> lftpc:nlist(Socket, infinity, [{partial_download, []}, {data_decoder, lftpc_format:nlst_decoder()}]).
{ok,{{150,
[<<"Data connection accepted from 127.0.0.1:54359; transfer starting.">>]},
{226,[<<"Transfer ok.">>]},
[[<<"example">>,<<"test">>]]}}
我們也可以指定partial_download
以塊的形式接收數據:
7> {ok, {_, Download}} = lftpc:nlist(Socket, infinity, [{partial_download, []}, {data_decoder, lftpc_format:nlst_decoder()}]).
{ok,{{150,
[<<"Data connection accepted from 127.0.0.1:54403; transfer starting.">>]},
<0.86.0>}}
8> receive {data_part, Download, Data} -> Data end.
[<<"example">>,<<"test">>]
9> receive {ftp_eod, Download, Message} -> Message end.
{226,[<<"Transfer ok.">>]}
看看主要的src/lftpc.erl
文件,有high-level和low-level功能取決於您的需求。你總是可以下降到lftpc:request/3,4,5,6
和lftpc:start_transfer/3
做任何自定義。
2
你可能會也可能不會發現這個有用的,但我可以解釋我們爲我們的項目做了什麼。我們特別需要在Erlang中使用sftp
,並發現它有問題,並且與某些服務器配置不兼容。我們最終用Java編寫了一個簡單的ftp/sftp客戶端,使用jsch,並使用JInterface
將它連接到Erlang。我們浪費了幾天的時間試圖與Erlang的ftp實現作鬥爭並使其工作,但最終在幾個小時內最終用JInterface開發和測試了Java實現。祝你好運。
相關問題
- 1. Windows FTP客戶端的替代品
- 2. Erlang SIP客戶端庫
- 3. erlang AMQP客戶端庫
- 4. 到JavaMail的替代Java客戶端庫?
- 5. Erlang - Riak客戶端
- 6. 替代C++ Web服務客戶端庫
- 7. 替代.NET的客戶端
- 8. RabbitMQ:安裝客戶端庫erlang
- 9. 適用於Windows的替代FTP客戶端
- 10. Erlang的Websocket客戶端
- 11. PHP/FTP客戶端
- 12. FTP客戶端Android
- 13. 開源Java FTP客戶端庫
- 14. Twitter流API - Erlang客戶端
- 15. erlang rabbitmq客戶端池
- 16. 尋找Erlang SMPP客戶端
- 17. Android的FTP客戶端?
- 18. .netcore中的FTP客戶端
- 19. J2ME中的FTP客戶端
- 20. FTP客戶端java實現
- 21. 在FTP客戶端recv()
- 22. FTP客戶端問題
- 23. FTP客戶端堆棧
- 24. XMPP服務器的Erlang客戶端
- 25. 如何加載Erlang的thrift客戶端
- 26. 在Vim中使用.netrc文件(作爲DreamWeavers FTP客戶端的替代品)
- 27. 使用來自Riak的氮氣中的Erlang客戶端庫
- 28. 替代HTTP客戶端提示
- 29. 替代套接字IO客戶端
- 30. 是否有Erlang BERT-RPC客戶端?
不幸的是,我無法在這個項目中添加對Java的依賴。否則會嘗試。 – 2011-03-31 14:57:44
是的,理解。祝你好運。 – 2011-03-31 15:21:39