DEV Community

Shelner
Shelner

Posted on

Create a simple TCP server with Node.js

I created a simple TCP server with Node.js (typescript).
This communicates each other TCP server and client.

// src/server.ts
import net from "net";

export class Server {
    constructor() {}

    runServer() {
        const server = net.createServer((socket) => {
            console.log("TCP Server: Client connected:", socket.remoteAddress);

            // Receive data from the client
            socket.on("data", (data) => {
                console.log("TCP Server: Receive from client:", data.toString());
                // send response
                socket.write("Hello client! I got your message: " + data.toString());
                // socket.end();
            });

            socket.on("close", () => console.log("TCP Server: Client disconnected"));
        });

        server.listen(4000, "127.0.0.1", () => {
            console.log("TCP Server: Server listening on 127.0.0.1:4000");
        });
    }
}
Enter fullscreen mode Exit fullscreen mode
// src/client.ts
import net from "net";

export class Client {
    constructor() {}

    runClient() {
        // Connect to the server
        const client = net.createConnection({ host: "127.0.0.1", port: 4000}, () => {
            console.log("TCP Client: Connected to server");
            // Send message
            client.write("Hello server! This is Client!");
        });

        // Receive data from the server
        client.on("data", (data) => {
            console.log("TCP Client: Received from server:", data.toString());
            client.end();
            // client.destroy();
        });

        // Handle close
        client.on("end", () => console.log("TCP Client: disconnected from server"));
    }
}
Enter fullscreen mode Exit fullscreen mode
// src/main.ts
import { Client } from "./client";
import { Server } from "./server";

class Main {

    constructor() { }

    startServer() {
        const server = new Server();
        server.runServer();
    }

    startClient() {
        const client = new Client();
        client.runClient();
    }
}

const main = new Main();
main.startServer();
main.startClient();
Enter fullscreen mode Exit fullscreen mode

Top comments (0)