时间:2021-05-22
转贴一个简单的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(?defPort,?docRoot). start(Port) -> start(Port,?docRoot). start(Port,DocRoot) -> case gen_tcp:listen(Port, [binary,{packet, 0},{active, false}]) of {ok, LSock} -> server_loop(LSock,DocRoot); {error, Reason} -> exit({Port,Reason}) end. %% main server loop - wait for next connection, spawn child to process it server_loop(LSock,DocRoot) -> case gen_tcp:accept(LSock) of {ok, Sock} -> spawn(?MODULE,process,[Sock,DocRoot]), server_loop(LSock,DocRoot); {error, Reason} -> exit({accept,Reason}) end. %% process current connection process(Sock,DocRoot) -> Req = do_recv(Sock), {ok,[Cmd|[Name|[Vers|_]]]} = split(Req,"[ \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了
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Java实现web服务器的简单实例实例代码:importjava.util.*;//Chapter8,Listing3publicclassWebServerD
一下是一个基于AIO实现的简单web服务器,这是一个简单例子/***一个简单的web服务器*通过浏览器输入localhost:8080/访问**@authorJ
一、python实现web服务器web开发首先要有web服务器才行。比如apache,但是在开发阶段最好有一个简单方便的开发服务器,容易重启进行调试,等开发调试
Erlang中gen_tcp用于编写TCP程序,gen_udp用于编写UDP程序。一个简单的TCP服务器echo示例:复制代码代码如下:Start_echo_s
很多人只觉得web服务器是一个网站服务器,其实它是一个多层次的后端服务器,可以应用到多层架构中。那么web服务器软件的特点有哪些?web服务器的工作原理是什么?