第一个并发程序实验
文件程序的服务器
afile_server.erl 文件:
-module(afile_server). %%模块名称
start(Dir)->
spawn(afile_server,loop,[Dir]). %%spawn是创建一个执行afile_server 模块中loop(,[Dir])方法的进程 并返回一个进程标示符
loop(Dir)->
receive %%接收数据 匹配处理
{Client,list_dir} ->
Client ! {self(),file:list_dir(Dir)};
Full=filename:join(Dir,File),
Client ! {self(),file:read_file(Full)};
end,
loop(Dir).
文件程序的客户端
afile_client文件:
-module(afile_client).
-export([ls/1,get_file/2]).
ls(Server)->
Server ! {self(),list_dir}, %%向服务器发送请求
receive %%接收服务器返回的数据处理
{Server,FileList}->
FileList
end.
get_file(Server,File)->
Server ! {self(),{get_file,File}},
receive
{Server,Content}->
Content
end.
erlang调用:
1>c(afile_server).
2>c(afile_client).
3>Server=afile_server:start("."). 开启服务返回一个进程的标示符
4>afile_client:get_file(Server,"test.txt"). 向Server这个进程发送请求并得到返回数据
输出test.txt文本的内容