English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

برمجة الشبكة لإرلانغ

في Erlang، يمكن استخدام مكتبة inets لبناء خادم الويب في Erlang. دعونا نرى بعض الوظائف المستخدمة في برمجة الويب في Erlang. يمكن تنفيذ خادم HTTP (يُطلق عليه أيضًا httpd) لمعالجة طلبات HTTP.

يقدم الخادم العديد من الميزات، مثل -

  • طبقة الاتصال الآمن (SSL)

  • واجهة سكريبت Erlang (ESI)

  • واجهة خادم الوسائط المتعددة (CGI)

  • تأكيد هوية المستخدم (باستخدام Mnesia، Dets أو قاعدة بيانات النصية العارية)

  • نموذج ملف السجلات العامة (يدعم أو لا يدعم disk_log(3))

  • الاسم البديل للURL

  • خريطة الأفعال

  • قائمة الملفات

أول عمل هو بدء مكتبة الويب باستخدام الأمر.

inets:start()

الخطوة التالية هي تنفيذ وظيفة start في مكتبة inets لإنشاء خادم الويب.

以下是在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_rootdocument_root是强制性的参数。

输出

以下是上述程序的输出。

{ok,<0.42.0>}

要在 Erlang 实现 Hello world web 服务器,请执行以下步骤-

Step 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, [ 
   "Content-Type: text/html\r\n\r\n", "<html><body>Hello, World!</body></html>"].

الخطوة 2−كما يلي تشغيل الكود. قم بتشغيل ملف الأعلى ثم فيerlفيه قم بتنفيذ الأوامر التالية.

c(helloworld).

ستحصل على النتيجة التالية.

{ok,helloworld}

الخطوة التالية هي-

inets:start().

ستحصل على النتيجة التالية.

ok

الخطوة التالية هي-

helloworld:start().

ستحصل على النتيجة التالية.

{ok,<0.50.0>}

الخطوة 3−يمكنك الآن الوصول إلىurl- http://localhost:8081/erl/hello_world:service.