除了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. erlang AMQP客户端库
- 2. Erlang - Riak客户端
- 3. 替代C++ Web服务客户端库
- 4. 替代.NET的客户端
- 5. 适用于Windows的替代FTP客户端
- 6. Erlang的Websocket客户端
- 7. PHP/FTP客户端
- 8. J2ME中的FTP客户端
- 9. Android的FTP客户端?
- 10. .netcore中的FTP客户端
- 11. 寻找Erlang SMPP客户端
- 12. 在FTP客户端recv()
- 13. FTP客户端java实现
- 14. FTP客户端堆栈
- 15. XMPP服务器的Erlang客户端
- 16. 如何加载Erlang的thrift客户端
- 17. Windows Phone 7芒果的FTP客户端?
- 18. 简单的FTP客户端C + +
- 19. 问题与Android的FTP客户端
- 20. 需要快速的.NET FTP客户端
- 21. 简单的FTP客户端认证?
- 22. Erlang捕获断开客户端
- 23. Erlang HTTP客户端:inets或ibrowse或...?
- 24. Erlang替代trap_exit?
- 25. SSH客户端德尔福开源库或组件,或替代
- 26. 基于文本的FTP客户端设置代理
- 27. Erlang:客户端IP地址,发送数据包到特定的客户端?
- 28. FTP客户端子目录创建
- 29. 寻找命令行ftp客户端(linux)
- 30. apache commons ftp客户端超时问题
不幸的是,我无法在这个项目中添加对Java的依赖。否则会尝试。 – 2011-03-31 14:57:44
是的,理解。祝你好运。 – 2011-03-31 15:21:39