반응형
[Node.js] 공부 3 일차
개발환경
- OS : windows
- 개발툴 : Brackets
- Node.js 버전 : 6.11.1 LTS
TCP 서버, 클라이언트 소스 생성하기 |
Client 에서 Server로 메시지 전송 시 Server에서 송신된 메시지를 그대로 전송해주는 에코 서버를 구성하여 확인
1.tcpServer.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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | var net_server = require('net'); var server = net_server.createServer(function(client) { console.log('Client connection: '); console.log(' local = %s:%s', client.localAddress, client.localPort); console.log(' remote = %s:%s', client.remoteAddress, client.remotePort); client.setTimeout(500); client.setEncoding('utf8'); client.on('data', function(data) { console.log('Received data from client on port %d: %s', client.remotePort, data.toString()); writeData(client, 'Sending: ' + data.toString()); console.log(' Bytes sent: ' + client.bytesWritten); }); client.on('end', function() { console.log('Client disconnected'); }); client.on('error', function(err) { console.log('Socket Error: ', JSON.stringify(err)); }); client.on('timeout', function() { console.log('Socket Timed out'); }); }); server.listen(9090, function() { console.log('Server listening: ' + JSON.stringify(server.address())); server.on('close', function(){ console.log('Server Terminated'); }); server.on('error', function(err){ console.log('Server Error: ', JSON.stringify(err)); }); }); function writeData(socket, data){ var success = socket.write(data); if (!success){ console.log("Client Send Fail"); } } | cs |
2.tcpClient.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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | var net_client = require('net'); function getConnection(){ //서버에 해당 포트로 접속 var client = ""; var recvData = []; var local_port = ""; client = net_client.connect({port: 9090, host:'localhost'}, function() { console.log("connect log======================================================================"); console.log('connect success'); console.log('local = ' + this.localAddress + ':' + this.localPort); console.log('remote = ' + this.remoteAddress + ':' +this.remotePort); local_port = this.localPort; this.setEncoding('utf8'); this.setTimeout(600000); // timeout : 10분 console.log("client setting Encoding:binary, timeout:600000" ); console.log("client connect localport : " + local_port); }); // 접속 종료 시 처리 client.on('close', function() { console.log("client Socket Closed : " + " localport : " + local_port); }); // 데이터 수신 후 처리 client.on('data', function(data) { console.log("data recv log======================================================================"); recvData.push(data); console.log("data.length : " + data.length); console.log("data recv : " + data); client.end(); }); client.on('end', function() { console.log('client Socket End'); }); client.on('error', function(err) { console.log('client Socket Error: '+ JSON.stringify(err)); }); client.on('timeout', function() { console.log('client Socket timeout: '); }); client.on('drain', function() { console.log('client Socket drain: '); }); client.on('lookup', function() { console.log('client Socket lookup: '); }); return client; } function writeData(socket, data){ var success = !socket.write(data); if (!success){ console.log("Server Send Fail"); } } var client = getConnection(); writeData(client, "에코 서버 테스트입니다."); | cs |
tcp 서버 및 클라이언트 결과 확인 |
1. tcpServer.js 구동 시키기 |
1 | Server listening: {"address":"::","family":"IPv6","port":9090} | cs |
2. tcpClient.js 구동 시키기 |
1 2 3 4 5 6 7 8 9 10 11 | connect log====================================================================== connect success local = 127.0.0.1:55449 remote = 127.0.0.1:9090 client setting Encoding:binary, timeout:600000 client connect localport : 55449 data recv log====================================================================== data.length : 22 data recv : Sending: 에코 서버 테스트입니다. client Socket End client Socket Closed : localport : 55449 | cs |
- 연결된 서버로 "에코 서버 테스트입니다." 메시지를 전송한다.
- tcp 서버로부터 "에코 서버 테스트입니다." 메시지를 송신받는다.
- 메시지 수신 후 접속 상태를 끊는다.
3. tcpServer.js 로그 확인하기 |
1 2 3 4 5 6 | Client connection: local = ::ffff:127.0.0.1:9090 remote = ::ffff:127.0.0.1:55449 Received data from client on port 55449: 에코 서버 테스트입니다. Bytes sent: 42 Client disconnected | cs |
- tcp 클라이언트 접속을 확인한다.
- 접속된 클라이언트에서 송신한 메시지를 확인한다.
- 접속된 클라이언트로 수신받은 메시지를 재송신한다.
- 클라이언트에서 접속이 끊어지는 것을 확인한다.
반응형
'Node.js' 카테고리의 다른 글
[Node.js] 공부 4 일차 - Node.js Buffer 사용법 (0) | 2017.08.15 |
---|---|
[Node.js] 공부 2 일차 - HTTP 서버 소스 분석 (3) | 2017.08.06 |
[Node.js] 공부 1 일차 - Node.js 설치 및 동작 테스트 (0) | 2017.07.31 |