본문 바로가기
기타/Node.js

Node.js로 HTTP, TCP 서버와 클라이언트 만들기

by BsDev. 2018. 6. 27.
마이크로서비스 세미나 1주차Node.js로 서버와 클라이언트 만들기

Node.js로 서버와 클라이언트 만들기

  • 언어는 javascript를 사용한다.

  • IDE는 WebStorm을 사용한다.

Node.js를 이용해서 HTTP 서버와 클라이언트, TCP 서버와 클라이언트를 만든다.

Byeongsoon Jang<byeongsoon@wisoft.io>

WebStorm에서 새 프로젝트를 만든 뒤, 터미널 창에서 npm i node를 하면 node_module이 생성된다.

HTTP 서버 만들기

http 모듈을 사용할 수 있도록 require 키워드를 이용해 http 모듈을 로드한다.

httpServer.js
const http = require('http');

var server = http.createServer((req, res) => { // HTTP 서버 인스턴스를 만든다.
  res.end("hello world");
});

server.listen(8000); // 서버에 포트를 할당

httpServer.js 파일이 있는 경로로 이동하여

$ node httpServer.js

위 의 명령을 실행한 뒤에 웹 브라우저에서 http://127.0.0.1:8000으로 접속하면 "hello world" 문자가 보입니다.

HTTP 클라이언트 만들기

클라이언트에서는 서버를 만들 때와 동일하게 http 모듈을 로드하고 접속할 서버의 정보와 호출할 페이지 정보를 options 변수에 담는다.

httpClient.js
var http = require('http');

var options = { // 호출할 페이지 정보 설정
  host: "127.0.0.1",
  port: 8000,
  path: "/"
}

var req = http.request(options, (res) => { // 페이지를 호출
  var data = "";

  res.on('data', (chunk) => { // 서버에서 받아온 데이터 수신
    data += chunk;
  });

  res.on('end', () => { // 수신 완료하면 console에 출력
    console.log(data);
  });
});

req.end(); // 명시적 완료를 나타낸다.

위에서 만든 HTTP 서버 코드를 동작시켜놓고 다른 터미널을 열어 node 'httpClient.js'를 하게되면

$ node httpClient.js
hello world

위와 같이 나타나게 된다.

TCP 서버 만들기

TCP는 인터넷 프로토콜 스위트의 핵심 프로토콜 중 하나로 TCP/IP라는 명칭으로도 많이 사용한다.

Node.js에서는 net이라는 기본 모듈을 이용해 TCP 서버와 TCP 클라이언트 관련 API를 제공한다.

tcpServer.js
var net = require('net'); // net 모듈 로드

var server = net.createServer((socket) => { // TCP 서버를 만든다.
  socket.end('hello world');
});

server.on('error', (err) => { // 네트워크 에러 처리
  console.log(err);
});

server.listen(9000, () => {
  console.log('listen', server.address());
});

tcpServer.js 파일을 실행한다.

$ node tcpServer.js
listen { address: '::', family: 'IPv6', port: 9000}

TCP 클라이언트 만들기

tcpClient.js
var net = require('net');

var options = { // 접속 정보 설정
  port: 9000,
  host: "127.0.0.1"
};

var client = net.connect(options, () => { // 서버 접속
  console.log("connected");
});

client.on('data', (data) => { // 데이터 수신 이벤트
  console.log(data.toString());
});

client.on('end', () => { // 접속 종료
  console.log("disconnected");
});

HTTP와 마찬가지로 tcpServer.js를 실행해 놓고 다른 터미널을 열어서 'node tcpClient.js'를 실행한다.

$ node tcpClient.js
connected
hello world
disconnected