일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ART_Cinema
- 장고 개발 순서
- Blog
- passport.js
- Django Blog
- 북마크앱
- Node.js
- Exercism
- 자바스크립트
- til
- MYSQL
- 예술영화추천
- 독립영화플랫폼
- Bookmark
- 프로젝트
- 알고리즘
- 장고 프로젝트 순서
- MyPick31
- mongodb
- JavaScript
- 장고 프로젝트
- 파이썬 웹프로그래밍 장고
- python
- 개발
- 장고
- 북마크만들기
- Django
- join()
- 타사인증
- Algorithm
- Today
- Total
Juni_Dev_log
(node.js) Do it! 도전문제(1), (2) 본문
문제 1) 파일의 내용을 한 줄씩 읽어 들여 화면에 출력하는 기능을 만들어보자.
Hint)
1. 하나의 파일을 만들고 각 줄에는 공백으로 구분된 이름, 나이, 전화번호가 들어가도록 구성한다.
2. 파일의 내용을 한 줄씩 읽어 들이면서 각 정보를 공백으로 구분한다.
3. 구분된 정보 중에서 이름만 화면에 출력한다.
(customer.txt)
아무무 15 010-1111-2222
말파이트 20 010-3333-4444
마오카이 24 010-5555-6666
(mission1.js)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
var fs = require('fs');
var readline = require('readline');
// 한 줄씩 읽어들이는 함수 정의
function processFile(filename){
var instream = fs.createReadStream(filename);
var reader = readline.createInterface(instream, process.stdout);
var count = 0;
// 한 줄씩 읽어들인 후에 발생하는 이벤트
reader.on('line', function(line){
console.log('한 줄 읽음 : ' + line);
count += 1;
// 공백으로 구분
var tokens = line.split(' ');
if (tokens != undefined && tokens.length > 0){
console.log('#' + count + ' -> ' + tokens[0]);
}
});
reader.on('close', function(line){
console.log('파일을 모두 읽음.');
});
}
var filename = 'C:/Users/kks13/OneDrive/바탕 화면/Dev/Study/nodejs/nodejs_study/NodeExample1/연습문제/customer.txt';
processFile(filename);
|
cs |
(console 출력 결과)
한 줄 읽음 : 아무무 15 010-1111-2222
#1 -> 아무무
한 줄 읽음 : 말파이트 20 010-3333-4444
#2 -> 말파이트
한 줄 읽음 : 마오카이 24 010-5555-6666
#3 -> 마오카이
파일을 모두 읽음.
- fs 모듈
① fs.createReadStream() 을 통해서, 메모장에 적은 내용을 스트림으로 읽어온다.
- readline 모듈
nodejs.sideeffect.kr/docs/v0.8.20/api/readline.html
① readline.createInterface(instream, process.stdout) 으로 인터페이스를 만든다.
② reader.on() 으로 line 이벤트를 발생시켜서 한 줄씩 line 을 읽는다.
③ 체크하기 위해서 count 를 추가한다.
④ split() 을 사용해서 공백을 기준으로 나눈다.
⑤ if 문을 통해서, 정의되지 않은(undefined) 경우가 아닌 경우 (즉, 정의된 경우) / 배열의 길이가 0보다 큰 경우 일 때,
console.log() 로 출력을 진행한다.
⑥ reader.on() 으로 close 이벤트를 발생시켜서 인터페이스를 종료한다. 종료하면서, console.log()를 찍어준다.
문제 2) 소켓 서버와 소켓 클라이언트 기능을 노드로 구성하여 소켓 클라이언트에서 데이터를 보내면 소켓 서버에서 다시 돌려주는 기능을 만들어보자.
Hint)
1. 노드의 소켓 기능을 이용해 소켓 서버와 소켓 클라이언트를 만든다.
2. 소켓 클라이언트에서는 소켓 서버로 연결한다.
3. 소켓 클라이언트에서 소켓 버서로 '안녕!' 과 같은 글자를 보내면 소켓 서버에서 그 글자를 그대로 다시 소켓 클라이언트로 보낸다.
4. 소켓 클라이언트와 소켓 서버에서는 보내고 받은 데이터를 화면에 출력한다.
(server.js)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
var net = require('net');
// 소켓 서버 생성
var server = net.createServer(function(socket){
//연결된 클라이언트 정보 확인
socket.name = socket.remoteAddress + ':' + socket.remotePort;
console.log('클라이언트 연결됨 -> ' + socket.name);
//클라이언트로부터 메세지를 받았을 때 발생하는 이벤트
socket.on('data',function(data){
console.log('클라이언트로부터 받은 데이터 : ' + data);
// 받은 메세지를 돌려줌
socket.write(data + ' from server.');
});
//클라이언트 연결이 끊어진 경우
socket.on('end',function(){
console.log('클라이언트로부터 연결 끊어짐 -> ' + socket.name);
});
});
// 소켓 서버 실행
var port = 3000;
server.listen(port);
console.log('소켓 서버 실행됨 : ' + port);
|
cs |
(client.js)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
var net = require('net');
var hostname = 'localhost';
var port = 3000;
// 서버에 연결
var client = new net.Socket();
client.connect(port, hostname, function(){
console.log('서버에 연결됨 -> ' + hostname + ':' + port);
client.write('안녕');
});
// 서버로부터 데이터를 받았을 때 발생하는 이벤트
client.on('data', function(data){
console.log('서버로부터 받은 데이터 -> '+ data);
//클라이언트 연결 종료
client.destory();
});
client.on('close', function(){
console.log('연결 끊어짐.');
});
|
cs |
- net 모듈
- socket
mylko72.gitbooks.io/node-js/content/chapter8/chapter8_3.html
kimyc1223.github.io/2019-11-27-HoloLens004/
[server.js]
① net.createServer 를 통해서 서버 객체를 생성한다.
② listen 을 통해서 클라이언트가 해당 포트를 통해서 접속할 수 있도록 동작을 시킨다.
③ createServer 내부에는 콜백함수가 들어있어 사용자가 요청하면 해당 함수가 호출된다.
④ socket.on() 을 통해서 다양한 기능을 구현할 수 있다.
⑤ data 는 클라이언트가 전송한 데이터를 callback 함수에 받아서 console에 출력을 해주는 역할을 하고, 'close'를 통해 클라이언트가 접속이 끊기는 메시지를 출력할 수 있다.
[client.js]
① 서버에서 접속을 허용하는 5000번 포트를 통해 연결을 하고, on메소드를 통해 'connect' 되었을 때 내부에 있는 callback 함수를 호출한다.
② 'data', 'end', 'error' , 'timeout' 등의 다양한 상황에서 호출이 가능한 callback 함수를 생성한다.
'Theorem (정리) > node.js' 카테고리의 다른 글
(node.js) [Part.5] 웹 서버 만들기 - 익스프레스로 웹 서버 만들기 (0) | 2020.12.08 |
---|---|
(node.js) [Part.5] 웹 서버 만들기 - 간단한 웹 서버 만들기 (0) | 2020.12.07 |
(node.js) [Part.4] 노드의 기본 기능 알아보기 - 로그 파일 남기기 (0) | 2020.12.06 |
(node.js) [Part.4] 노드의 기본 기능 알아보기 - 파일 다루기 (0) | 2020.12.06 |
(node.js) [Part.4] 노드의 기본 기능 알아보기 - 이벤트 이해하기 (0) | 2020.12.03 |