【问题标题】:How to write a simple hello-world web server with pure erlang如何用纯erlang编写一个简单的hello-world web服务器
【发布时间】:2017-05-24 00:05:38
【问题描述】:

使用纯 Erlang 最简单的 Web 服务器实现是什么,显示“hello-world”HTML 页面?

【问题讨论】:

  • 您似乎希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的编码人员编写代码,但他们通常只有在发布者已经尝试自己解决问题时才会提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出以及您实际获得的输出(控制台输出、回溯等)。您提供的详细信息越多,您可能收到的答案就越多。检查FAQHow to Ask
  • 这是一个使用 Erlang 的简单 HTTP 1.0 Web 服务器,大约 40 行代码,不包括 cmets:https://gist.github.com/vinoski/4996859

标签: erlang


【解决方案1】:

erlang 中有 575 个字符长 web server

$ cat hgolf.erl

main(_)->{ok,L}=gen_tcp:listen(36895,[]),s(L).
s(L)->{ok,S}=gen_tcp:accept(L),receive{tcp,S,"GET "++R}->[F|_]=string:tokens("/var/www"++R," "),case case file:read_file_info(F)of{ok,{_,_,regular,read,_,_,_,_,_,_,_,_,_,_}}->a;{ok,_}->"500 Server Error";_->"404 File Not Found"end of a->h(S,"200 OK\r\nContent-Type: "++case lists:reverse(F)of"lmth."++_->"text/html";"txt."++_->"text/plain";_->"application/octet-stream"end,[]),file:sendfile(F,S);E->h(S,E,E)end;_->E="405 Not Supported",h(S,E,E)end,gen_tcp:close(S),s(L).
h(S,H,B)->gen_tcp:send(S,["HTTP/1.1 ",H,"\r\n\r\n",B]).

如何运行

$ escript hgolf.erl

但作为标准 Erlang/OTP 发行版的一部分,还有更多功能的 Web 服务器 inets

【讨论】:

    【解决方案2】:

    更简单的方法是使用 Cowboy 包,它们有很好的文档,第一个示例是 Hello World!一。你可以在https://ninenines.eu/docs/en/cowboy/2.0/guide/getting_started/阅读它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-13
      • 2011-06-20
      • 2010-11-25
      • 2011-03-26
      • 2012-08-17
      • 2012-08-18
      • 2012-09-07
      • 1970-01-01
      相关资源
      最近更新 更多