无法通过Joe Armstrong编写的Erlang编程实现喊叫服务器

时间:2014-12-28 22:08:23

标签: erlang

仅仅是我还是Joe Armstrong编程Erlang书(第2版)第17章(使用套接字编程)中的喊叫服务器的代码根本不起作用。我能够从http://media.pragprog.com/titles/jaerlang2/code/jaerlang2-code.zip获得更新版本的代码......但它仍然不起作用。想知道是否有人成功实现了它,或者是否有正确工作代码的github链接。这确实阻碍了我对Erlang的学习。

非常感谢。

编辑: 我很抱歉没有在问题中加入更多细节。 如果他们已经阅读了这本书并成功实施了它,我不想打扰任何阅读长篇问题的人。

这就是我所做的:我在第14行修改了mp3_manager.erl代码:

Files = lib_files_find:files("/Volumes/joe/piano_concertos", "*.mp3", true),

{ok, CurrDir} = file:get_cwd(),
Dir = CurrDir ++ "/shoutCast_Music",
{ok, Files} = file:list_dir(Dir),

当我按照指示运行mp3_manager.erl start1函数时,转储到mp3data文件的内容为:

[{"Careful Where You Stand - Coldplay.mp3",{error,enoent}},
 {"Parachutes - Coldplay.m4a",{error,enoent}},
 {"See You Soon - Coldplay.mp3",{error,enoent}},
 {"Shiver - Coldplay.mp3",{error,enoent}},
 {"Trouble - Coldplay.mp3",{error,enoent}},
 {"U.F.O. - Coldplay.mp3",{error,enoent}}].

我认为服务器无法正常处理这些错误。 我甚至试图将音乐文件更改为只有id3 v 1标签 我下载的音乐标签软件: http://ftp.is.co.za/mirror/ftp.gnome.org/binaries/win32/easytag/2.2/easytag-2.2.5-setup.exe

我使用的是Erlang 17版。

1 个答案:

答案 0 :(得分:1)

我不熟悉本书中的示例,但{error,enoent}表示虚拟机正在尝试打开不存在的文件。

我会打印文件的完整路径以确保您的文件引用正确。您可以使用io执行此操作:fwrite(“〜p~n”,[FilePath])。