nodejs的socket网络编程

简单介绍使用nodejs的net模块进行socket网络编程,不涉及深入的自定义应用层协议知识,仅仅进行了文本的传输,没有设计数据的结构,数据的结束位置等。

socket默认使用传输层的TCP可靠送达协议,默认是长连接。

server端:

const net = require("net");
const HOST = "127.0.0.1";
const PORT = 6868;

const server = net.createServer();
server.listen(PORT, HOST);

// 重要:双方建立链接时,会自动获得一个socket对象(std,socket描述符)
server.on("connection", (socket) => {
  // 远程客户端地址
  console.log(`connected:${socket.remoteAddress}:${socket.remotePort}`);
  // 本地服务端地址
  console.log(`local:${socket.localAddress}:${socket.localPort}`);
  // 向客户端发送数据
  socket.write("服:你好客户端");
  // 收到客户端数据时
  socket.on("data", (data) => {
    console.log(`${data}`);
  });
  // 客户端主动断连,触发end事件
  socket.on("end", (data) => {
    console.log(`客户端${socket.remoteAddress}:${socket.remotePort}已断连`);
  });
  // 如果链接断开,write方法就无效了
  setInterval(() => {
    socket.write(`服:定时消息${Date.now()}`);
  }, 1000);
});

console.log(`server listen on ${HOST}:${PORT}`);

client端:

const net = require("net");
const HOST = "127.0.0.1";
const PORT = 6868;

const client = new net.Socket();

client.connect(PORT, HOST, () => {
  console.log(`connected to:${HOST}:${PORT}`);
  // 向服务端发送数据
  client.write("客:你好服务端");
  // 收到服务端数据时
  client.on("data", (data) => {
    console.log(data.toString());
    client.write("客:已收到");
    // client.end(); // 主动关闭此次tcp长连接
  });
  // 客户端主动断连,触发自己的end事件
  client.on("end", () => {
    console.log("链接已主动断开");
  });
});

你可能感兴趣的:(nodejs,网络,服务器,运维)