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.