Deno 是一个基于 V8 引擎的 JavaScript 和 TypeScript 运行时,它具有快速启动速度、安全性高、内置模块等优点,逐渐受到前端开发者的青睐。在 Deno 中,我们可以使用 TCP 套接字进行网络编程,本文将详细介绍如何在 Deno 中使用 TCP 套接字进行网络编程。
TCP 套接字
TCP 套接字是传输控制协议的一种抽象。它提供了在网络上的两个终端之间进行通信的方法。TCP 套接字是在应用层和网络层之间中间的一个抽象层,应用程序通过套接字接口使用它来发送和接收数据。在 Deno 中,我们可以使用 Deno.listen()
方法来创建 TCP 服务器套接字。
const listener = Deno.listen({ port: 8080 }); console.log(`Listening on localhost:8080`); for await (const conn of listener) { handleConnection(conn); }
上面的代码创建了一个 TCP 服务器套接字,端口号为 8080。它一直监听端口号为 8080 的连接请求,当有客户端连接到服务器时,会调用 handleConnection()
函数来处理连接请求。
TCP 客户端
除了创建 TCP 服务器套接字,我们也可以使用 Deno.connect()
方法来创建 TCP 客户端套接字。下面是一个示例代码:
const conn = await Deno.connect({ hostname: "localhost", port: 8080 }); const encoder = new TextEncoder(); await conn.write(encoder.encode("Hello World\n")); conn.close();
上面的代码创建了一个 TCP 客户端套接字,连接到本地的 8080 端口。它发送了一个字符串 "Hello World" 到服务器,并且立即关闭了连接。
实例应用 —— 使用 TCP 套接字进行数据传输
下面我们来看一个实例应用,它演示了如何使用 TCP 套接字进行数据传输。我们创建了一个简单的聊天服务器,它可以接收多个客户端的连接,并让客户端互相聊天:
// javascriptcn.com 代码示例 const listener = Deno.listen({ port: 8080 }); const clients: Deno.Conn[] = []; console.log(`Listening on localhost:8080`); for await (const conn of listener) { clients.push(conn); handleConnection(conn); } async function handleConnection(conn: Deno.Conn) { const decoder = new TextDecoder(); const encoder = new TextEncoder(); for await (const chunk of Deno.iter(conn)) { const message = decoder.decode(chunk).trim(); console.log(`${conn.remoteAddr}: ${message}`); for (const client of clients) { if (client !== conn) { await client.write(encoder.encode(`${conn.remoteAddr}: ${message}\n`)); } } } }
上面的代码实现了一个聊天服务器,它可以在本地的 8080 端口启动,等待客户端连接。当有客户端连接到服务器时,服务器将连接保存到 clients
数组中,并且创建一个 handleConnection()
函数来处理连接请求。handleConnection()
函数使用 Deno.iter()
方法来循环读取客户端发送的数据,并且将数据广播给所有连接到服务器的客户端。
总结
本文介绍了如何在 Deno 中使用 TCP 套接字进行网络编程。我们学习了如何创建 TCP 服务器套接字和 TCP 客户端套接字,并且实现了一个简单的聊天服务器。希望本文对于想要在 Deno 中进行网络编程的开发者有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6532743c7d4982a6eb533490