English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En Erlang, la biblioteca inets se puede usar para construir servidores web en Erlang. Veamos algunas funciones utilizadas para programación web en Erlang. Se puede implementar un servidor HTTP (también conocido como httpd) para manejar solicitudes HTTP.
El servidor ha implementado muchas características, por ejemplo-
Capa de socket de seguridad (SSL)
Interfaz de script Erlang (ESI)
Interfaz de gateway de red común (CGI)
Autenticación de identidad de usuario (usando Mnesia, Dets o base de datos de texto puro)
通用日志文件格式(支持或不支持disk_log(3))
URL别名
动作映射
目录列表
第一项工作是通过命令启动Web库。
inets:start()
下一步是实现inets库的start函数,以便实现web服务器。
以下是在Erlang中创建Web服务器进程的示例。
-module(helloworld). -export([start/0]). start() -> inets:start(), Pid = inets:start(httpd, [{port, 8081}, {server_name,"httpd_test"}, {server_root,"D://tmp"},{document_root,"D://tmp/htdocs"}, {bind_address, "localhost"}]), io:fwrite("~p",[Pid]).
关于上述程序,需要注意以下几点。
端口号必须是唯一的,不能被任何其他程序使用。将在这个端口号上启动 httpd 服务。
server_root和document_root是强制性的参数。
以下是上述程序的输出。
{ok,<0.42.0>}
要在 Erlang 实现 Hello world web 服务器,请执行以下步骤-
Paso 1 −实施以下代码−
-module(helloworld). -export([start/0,service/3]). start() -> inets:start(httpd, [ {modules, [ mod_alias, mod_auth, mod_esi, mod_actions, mod_cgi, mod_dir, mod_get, mod_head, mod_log, mod_disk_log {port,8081}, {server_name,"helloworld"}, {server_root,"D://tmp"}, {document_root,"D://tmp/htdocs"}, {erl_script_alias, {"/erl", [helloworld]}}, {error_log, "error.log"}, {security_log, "security.log"}, {transfer_log, "transfer.log"}, {mime_types,[ {"html","text}/html"}, {"css","text/css"}, {"js","application/x-javascript"} ]} ]). service(SessionID, _Env, _Input) -> mod_esi:deliver(SessionID, [ "Contenido-Tipo: text/html\r\n\r\n", "<html><body>Hello, World!</body></html>" ]).
Paso 2−Ejecute el código de la siguiente manera. Compila el archivo superior y luegoerlEjecute el siguiente comando en
c(helloworld).
Obtendrá la siguiente salida.
{ok,helloworld}
El siguiente comando es-
inets:start().
Obtendrá la siguiente salida.
ok
El siguiente comando es-
helloworld:start().
Obtendrá la siguiente salida.
{ok,<0.50.0>}
Paso 3−Ahora puede acceder a la url- http://localhost:8081/erl/hello_world:service.