Deno 中的基本 Socket 编程

阅读时长 6 分钟读完

介绍

Deno是由Node.js的创建者Ryan Dahl打造的下一代JavaScript运行时环境。与Node.js相比,它有更好的标准模块支持、更安全的代码执行和良好的TypeScript支持。

在Deno中,我们可以使用std模块来实现Socket编程。本文将介绍Deno中的基本Socket编程知识,并提供示例代码。

创建一个 TCP 服务器

在Deno中,我们可以使用Deno.listen()方法创建一个TCP服务器。Deno.listen()方法接受一个ListenOptions对象作为参数,该对象包含一个对象属性port来指定服务器端口。下面是一个创建TCP服务器的基本示例:

在上面的示例中,我们使用了serve()方法创建了一个TCP服务器,该方法返回一个可迭代的异步迭代器。我们可以使用for await ... of语句来迭代这个迭代器,每当有客户端请求时,它就会返回一个请求对象。我们可以使用respond()方法来返回响应,示例代码中我们简单地返回了一个Hello World字符串,并用\n来表示新的一行。

创建一个 TCP 客户端

在Deno中,我们可以使用Deno.connect方法来创建一个TCP客户端。Deno.connect()方法需要一个对象参数,该对象由以下属性组成:

  • hostname: 远程服务器的主机名。
  • port: 远程服务器的端口。
  • options: 可选属性,用于指定通信协议。

下面是一个创建TCP客户端的基本示例:

-- -------------------- ---- -------
------ - --------- - ---- ------------------------------------
------ - --------------- - ---- -----------------------------------------

----- ---- - ----- -------------- --------- ------------ ----- ---- ---

----- ------- - ---- - ----------------- ------------------------

----- -------------- -------------------------------

----- ------- - --- --------------

----- --------- - --- ----------------

----- ---------- - ----- ---------------------

------------------------

-------------

在上面的示例中,我们使用了Deno.connect()方法创建了一个TCP客户端并连接到服务器。然后,我们构造了一个HTTP GET请求,并使用conn.write()方法将请求数据写入连接。接着,我们使用BufReader创建一个可读取的缓冲区,使用TextProtoReader读取连接并解析响应。最后,我们输出了响应行并关闭连接。

创建一个 UDP 服务器

在Deno中,我们可以使用Deno.listenDatagram方法创建一个UDP服务器。与TCP服务器不同的是,UDP服务器可以同时接收多个客户端的数据。

下面是一个创建UDP服务器的基本示例:

-- -------------------- ---- -------
----- ---- - - --------- ---------- ----- ---- --

----- ------- - --------------------------

---------------- ------ -- ------- -- ---- -------

--- ----- ------ ----- ------ -- -------- -
  ---------------- ------- ---- -------------------------------- ---------
  ----------------- -------
-

在上面的示例中,我们使用了Deno.listenDatagram()方法创建了一个UDP服务器,并使用for await ... of语句来迭代udpConn返回的迭代器。每当有客户端发送数据到服务器时,它就会返回一个[msg, rinfo]元组。在这个元组中,msg表示客户端发送的数据,rinfo包含了客户端的地址和端口。我们可以使用udpConn.send()方法将数据发送回客户端。

创建一个 UDP 客户端

在Deno中,我们可以使用Deno.connectDatagram()方法创建一个UDP客户端,并使用conn.send()方法将数据发送到指定的地址和端口。

下面是一个创建UDP客户端的基本示例:

-- -------------------- ---- -------
----- ---- - - --------- ------------ ----- ---- --

----- ---- - ---------------------------

----- ------- - --- ---------------------------- --- ----------

----- -------------------

----- ------ - --- -----------------

----- - - ----- ---------------------

----- -------- - --- --------------------------------------- ----

----------------------

-------------

在上面的示例中,我们使用了Deno.connectDatagram()方法创建了一个UDP客户端,并使用conn.send()方法将字符串转换为字节数组并发送到服务器。然后,我们使用conn.receive()方法接收服务器发回的数据,并使用TextDecoder解码收到的数据。最后,我们输出了服务器发回的响应并关闭连接。

总结

在本文中,我们介绍了Deno中的基本Socket编程知识,并提供了示例代码。使用Denos的std模块,我们可以轻松地编写TCP和UDP服务器和客户端,并实现各种网络应用程序。如果你正在Deno中编写网络应用程序,Socket编程是必不可少的技能。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64577100968c7c53b0a243fa

纠错
反馈