net

The net module provides an asynchronous network API for creating TCP servers and clients. Communication uses sockets which are stream-based.


API Surface

Server

  • net.createServer([options], [connectionListener]) — create a TCP server.
  • server.listen(port[, host], callback) — start listening.
  • server.close([callback]) — stop server.
  • Events:
    • 'connection': new client socket.
    • 'listening', 'close', 'error'.

Socket (net.Socket)

  • Duplex stream representing connection.
  • socket.connect(port[, host], [callback]) — initiate client connection.
  • socket.write(data) — send data.
  • socket.end([data]) — half-close, optionally send final data.
  • Properties: socket.remoteAddress, socket.remotePort, socket.localAddress, socket.localPort.
  • Events:
    • 'data': incoming data chunk.
    • 'end': remote closed.
    • 'error': error occurred.
    • 'close': fully closed.

Examples (English only)

const net = require("net");

// Simple echo server
const server = net.createServer((socket) => {
  console.log("Client connected");

  socket.on("data", (data) => {
    console.log("Received:", data.toString());
    socket.write("Echo: " + data);
  });

  socket.on("end", () => console.log("Client disconnected"));
});

server.listen(3000, () => console.log("Server listening on port 3000"));

// Client example
const client = net.createConnection({ port: 3000 }, () => {
  console.log("Connected to server");
  client.write("Hello server!");
});

client.on("data", (data) => {
  console.log("From server:", data.toString());
  client.end();
});

Notes

  • TCP is stream-oriented; use 'data' events to accumulate or parse messages.
  • Always handle errors on both server and client sockets.
  • The server can handle multiple concurrent clients.
  • Use end to close a socket gracefully, destroy to force.