转贴一个简单的Web服务器:
httpd.erl
%% httpd.erl - MicroHttpd -module(httpd). -author("ninhenry@gmail.com"). -export([start/0,start/1,start/2,process/2]). -import(regexp,[split/2]). -define(defPort,8888). -define(docRoot,"public"). start() -> start("[ \r\n]"), FileName = DocRoot ++ Name, LogReq = Cmd ++ " " ++ Name ++ " " ++ Vers, Resp = case file:read_file(FileName) of {ok, Data} -> io:format("~p ~p ok~n",[LogReq,FileName]), Data; {error, Reason} -> io:format("~p ~p failed ~p~n",[LogReq,FileName,Reason]), error_response(LogReq,file:format_error(Reason)) end, do_send(Sock,Resp), gen_tcp:close(Sock). %% construct HTML for failure message error_response(LogReq,Reason) -> "<html><head><title>Request Failed</title></head><body>\n" ++ "<h1>Request Failed</h1>\n" ++ "Your request to " ++ LogReq ++ " failed due to: " ++ Reason ++ "\n</body></html>\n". %% send a line of text to the socket do_send(Sock,Msg) -> case gen_tcp:send(Sock, Msg) of ok -> ok; {error, Reason} -> exit(Reason) end. %% receive data from the socket do_recv(Sock) -> case gen_tcp:recv(Sock, 0) of {ok, Bin} -> binary_to_list(Bin); {error, closed} -> exit(closed); {error, Reason} -> exit(Reason) end
运行时在httpd.erl本地建一个public目录,public目录里放一个index.html文件
然后httpd:start()启动服务器,就可以访问http://localhost:8888/index.html了
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
更新日志
2024年05月08日
2024年05月08日
- 索尼真有你的!《剑星》反和谐发起人竟被索尼禁言了
- 戏班-《太平有象》FLAC
- 戏班《五石散》FLAC
- 新世纪天籁《BRAVENEWMUSIC》[低速原抓WAV+CUE]
- 要素过多!范伟与周冬雨新片发布“征婚启事”单人海报
- DC新《超人》定妆照公布:新版战衣首次亮相!
- EA版《哈迪斯2》IGN 9分:绝佳肉鸽续作!
- 洪卓立.2014-TIMING【英皇娱乐】【WAV+CUE】
- 杨乃文.2001-应该【魔岩】【WAV+CUE】
- MC.Hot.Dog.2001-犬【魔岩】【WAV+CUE】
- 【原神】V4.6攻略 | 百万奇饰大搜罗速刷点位
- 重云角色攻略心得分享,重云角色阵容推荐
- 重云角色培养心得,重云角色圣遗物选择
- 凤凰传奇《炫歌精选》[WAV/分轨][1.9GB]
- 刀郎《西域情郎 精选传奇歌手十五首》[WAV/分轨][760MB]