好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Erlang實現(xiàn)的一個Web服務(wù)器代碼實例

Erlang實現(xiàn)的一個Web服務(wù)器代碼實例

熱門標(biāo)簽:武漢AI電銷機器人 在電子版地圖標(biāo)注要收費嗎 南京電銷外呼系統(tǒng)哪家好 萬利達綜合醫(yī)院地圖標(biāo)注點 地圖標(biāo)注如何弄全套標(biāo) 實體店地圖標(biāo)注怎么標(biāo) 股票配資電銷機器人 電銷機器人 深圳 外呼系統(tǒng)會封嗎

轉(zhuǎn)貼一個簡單的Web服務(wù)器:

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()啟動服務(wù)器,就可以訪問http://localhost:8888/index.html了

您可能感興趣的文章:
  • Go/Python/Erlang編程語言對比分析及示例代碼
  • python讀取excel表格生成erlang數(shù)據(jù)
  • Erlang中的Record詳解
  • Erlang初學(xué):Erlang的一些特點和個人理解總結(jié)
  • CentOS 6.5源碼安裝Erlang教程
  • ERLANG和PYTHON互通實現(xiàn)過程詳解

標(biāo)簽:濟寧 泰安 安徽 廣東 臺州 武威 汕頭 濟源

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Erlang實現(xiàn)的一個Web服務(wù)器代碼實例》,本文關(guān)鍵詞  Erlang,實現(xiàn),的,一個,Web,服務(wù)器,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Erlang實現(xiàn)的一個Web服務(wù)器代碼實例》相關(guān)的同類信息!
  • 本頁收集關(guān)于Erlang實現(xiàn)的一個Web服務(wù)器代碼實例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 日本漫画之电车侵犯全彩| 肉色欧美久久久久久久蜜桃| 太深了受不了了| 香蕉视频精品| 激情高潮抽搐嘲春颤抖床| 久久精品久久久精品美女 | 好湿?好紧?好多水还| 《色戒》韩国版| 欧美黑人巨茎大战范冰冰| porn在线精品视频| 7x7x7x任你躁在线观看软件优势| 秋霞理论在一l级毛片| 乱肉伦辣妇小说| 琪琪理论片| 男人的??伸到??涩涩| 色哟哟日韩精品| 亚洲秘?精品一区二区| 美女无遮掩| 国产69精品一区二区亚洲孕妇 | 99精品热视频| 中文字幕乱偷无码亚洲A片| 爱情岛AQDLT国产论坛| 性网站视频| 国产亲妺妺乱的性视频在线观看| 精品无人妻一区二区三区免费蜜桃| 色成人综合| JUY-974暴风雨和上司中出| 喜爱夜蒲3吃奶床戏| 韩国女主播19禁??AV| 汤唯色戒最后结局怎么样| 国产高清在线91福利| 欧美肥老大bbbbxxxx| 韩国耽美| 秋霞福利片| 秋霞成人午夜伦在线观看| 午夜福利一区二区三区免费播放| 美女禁区a级全片免费观看| 日日噜噜夜夜狠狠视频| jizz日本女人| 国产精品一区二区视频| 欧美极品尤物被黑人狂暴视频|