Multi Developer SuHo

Node.js net 모듈을 활용한 간단한 TCP 서버 구축 본문

Node.js 기록

Node.js net 모듈을 활용한 간단한 TCP 서버 구축

Dreaming Developer Student 2025. 2. 23. 20:52
SMALL

안녕하세요 Node.js 에서 제공하는 net 모듈을 이용하여 간단한 TCP 서버를 구축해보겠습니다. 

📑목차
1. net  모듈을 활용한 서버 구축
1-1. net 모듈이란?
1-2. 코드 실행 구조

1-3. net 모듈을 활용한 서버 구축 코드
1-4. 실행 화면

1. net 모듈을 활용한 서버 구축

1-1. net 모듈이란?

Node.js 에서  TCP 소켓 서버를 구축할 수 있도록 도와주는 제공해주는 내장 모듈

 

 

실제로 node.js 사이트에서도 공식적으로 표기되어 있습니다.

https://nodejs.org/api/net.html

 

Net | Node.js v23.8.0 Documentation

Net# Source Code: lib/net.js The node:net module provides an asynchronous network API for creating stream-based TCP or IPC servers (net.createServer()) and clients (net.createConnection()). It can be accessed using: import net from 'node:net';const net = r

nodejs.org


1-2.  코드 실행 구조 

 

1️⃣클라이언트가 서버에 접속하면 코드에서 net.createServer( ) 내부의 콜백함수를 실행합니다. 
2️⃣클라이언트가 데이터를 전송하면 코드에 해당하는 data 이벤트를 발생시킵니다. 그리고 서버는 HTTP 응답 형식으로 3️⃣HTML을 작성한 후 클라이언트에게 전송합니다. 
4️⃣클라이언트는 요청을 받고 서버와의 논리적 연결을 끊습니다.
5️⃣이후 user.end( ) 를 호출하여 연결을 끊게 됩니다. 

 

1-3. net 모듈을 이용한 서버 구축 코드

 

net.js 소스코드 

// net 내장 모듈을 사용한 서버 구축
const net = require('net');
// console.log(net);


// 포트 번호를 정의하는 Port 선언 
const Port = 3000;


// 서버 객체 생성
const server = net.createServer((user) => {
    console.log(user);
    user.setEncoding("utf-8");

    // 클라이언트가 요청 메시지를 전송했을 때 콜백함수가 실행
    user.on('data', (data) => {
        console.log(data);

        // middle 즉, body 내용이 온다.
        const midddle = `<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0 auto;
            padding: 0;
        }
        .total {
            width: 100%;
            height: 100vh;
            background-color: aqua;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="total">나야 참기름</div>
    </div>
</body>
</html>`;

        // 요청 받을 부분을 작성
        const resbody =  `HTTP/1.1 200 OK
Content-Type: text/html
Content-Length : ${midddle.length}

${midddle}`

        // 클라이언트가 응답 헤더를 받은 데이터를 화면에 출력
        user.write(resbody);
        
        // 요청을 받고 나서 클라이언트와 서버간의 논리적 연결을 끊음
        // 1요청, 1응답
        user.end();
    })
})

server.listen(Port,() => {
    console.log("서버가 구동중...");
})



1-4. 실행 화면

 

먼저 node 환경에서 서버를 구동시킵니다.





 






LIST