The net module in Node.js allows you to build TCP applications by creating both TCP servers and clients. TCP (Transmission Control Protocol) is a reliable protocol that ensures ordered and error-free data transmission over a network.
Here’s a breakdown of what you can do with the net module:
TCP Servers:
You can create a TCP server using net.createServer(). This function takes a callback function that executes whenever a client connects to the server.
Inside the callback function, you can handle events like:
‘data’: This event fires when the server receives data from the client.
‘close’: This event fires when the client disconnects.
You can use the socket.write() method to send data back to the connected client.
TCP Clients:
You can create a TCP client using net.createConnection(). This function takes the server’s address (IP and port) and a callback function that executes when the connection is established.
The callback function allows you to send data to the server using socket.write().
You can listen for the ‘data’ event to receive data from the server.
This example demonstrates a simple TCP server and client application built with Node.js’s net module.
Server (server.js):
const port = 8080; // Port to listen on
const server = net.createServer((socket) => {
console.log(‘Client connected!’);
// Handle incoming data from the client
socket.on(‘data’, (data) => {
console.log(`Received data from client: ${data.toString()}`);
// Send a response back to the client
socket.write(`Hello from the server!`);
});
// Handle client disconnection
socket.on(‘end’, () => {
console.log(‘Client disconnected!’);
});
});
server.listen(port, () => {
console.log(`Server listening on port ${port}`);
});
Client (client.js):
const host = ‘localhost’; // Server hostname (or IP)
const port = 8080; // Port to connect to
const client = new net.Socket();
// Handle connection to the server
client.connect(port, host, () => {
console.log(‘Connected to server!’);
// Send data to the server
client.write(‘Hello from the client!’);
});
// Handle data received from the server
client.on(‘data’, (data) => {
console.log(`Received data from server: ${data.toString()}`);
});
// Handle client disconnection (optional)
client.on(‘end’, () => {
console.log(‘Disconnected from server!’);
});
Save the server code as server.js and the client code as client.js.
Run the server first: node server.js
In a separate terminal, run the client: node client.js
This will establish a TCP connection between the client and server. The server will log messages when a client connects,receives data, and disconnects. The client will log similar messages and also send a message “Hello from the client!” to the server upon connection. The server will then respond with “Hello from the server!”.
Note:
Remember, the net module can only be used in a Node.js environment, not directly in a web browser.
Also, remember to replace localhost with the actual server IP address if you’re running the server on a different machine.
Let’s wrap up things
By understanding these concepts, you can build more complex TCP-based applications in Node.js!
HAPPY CODING!!!