본문 바로가기

Node.js

[Node.js] TCP 클라이언트(client)와 서버(server) 만드는 방법

반응형

 

 

 

주요 내용

  1. TCP 클라이언트 생성
  2. 서버에 접속 및 데이터 송신
  3. 표준 입력장치로부터 데이터를 받아 서버로 전송
  4. TCP 서버 생성
  5. 클라이언트 접속 처리
  6. 클라이언트로부터 데이터 수신 및 처리

 

TCP 클라이언트 생성

먼저, net 모듈을 사용하여 TCP 클라이언트를 생성한다.

const net = require('node:net');
const target = {
  host: 'google.com',
  port: 80
};

const socket = net.createConnection(target.port, target.host, function () {
  console.log(`서버 접속. ${target.host}:${target.port}`);
  socket.write('GET / HTTP/1.1\n\n');
});

socket.on('error', (err) => {
  console.error(err);
});

 

createConnection 메서드를 사용하여 특정 호스트와 포트에 연결하며,

서버와 접속되면 클라이언트는 'GET / HTTP/1.1' 요청을 전송한다.

 

 

 

 

서버에 접속 및 데이터 송신

접속한 서버로부터 데이터를 수신할 때는 'data' 이벤트를 통해 처리할 수 있다.

socket.on('data', function (data) {
  console.log(`서버 메시지: ${data.toString()}`);
});

서버에서 데이터가 도착하면 이벤트 리스너가 호출되어 수신된 데이터를 콘솔에 출력한다.

 

 

 

표준 입력장치로부터 데이터를 받아 서버로 전송

process.stdin.pipe(socket);

표준 입력장치의 데이터를 바로 socket으로 전달하기 위해 pipe 메서드를 사용한다.

 

 

 

 

TCP 서버 생성

net 모듈을 사용하여 TCP 서버를 생성한다.

const net = require('node:net');
const tcpServer = net.createServer(function (socket) {
  console.log(socket.remoteAddress, '접속함.');
  socket.on('error', function () {
    console.log(socket.remoteAddress, '접속 종료.');
  });
});
반응형

createServer 메서드를 사용하여 TCP 서버를 생성하고, 클라이언트가 접속했을 때 이벤트 리스너를 등록한다.

 

 

 

 

클라이언트 접속 처리 및 에러 이벤트 처리

클라이언트가 서버에 접속하면 해당 클라이언트에 대한 정보를 출력하고, 연결이 끊길 때에도 출력한다.

socket.on('error', function () {
  console.log(socket.remoteAddress, '접속 종료.');
});

 

 

 

 

클라이언트로부터 데이터 수신 및 처리

클라이언트로부터 데이터를 받아 처리한다.

socket.on('data', function (data) {
  console.log(data.toString());
  socket.write(data);
});

 

클라이언트로부터 데이터를 받으면 해당 데이터를 출력하고, 원본 데이터를 그대로 전송하여 클라이언트에 전달한다. 

 

 

   

 

서버 구동

마지막으로, TCP 서버를 특정 포트에서 구동하도록 설정한다.

tcpServer.listen(33112, function () {
  console.log('TCP 서버 구동.');
});

 

 

 

 

 

반응형