코딩하렴

node.js net module :: net으로 서버 열기

by 으렴

net module socket

 

전송 제어 프로토콜 TCP를 사용해 원시데이터를 전송.

 

두가지 형태(server, client)로 존재하며 서버간의 지점 대 지점 통신을 제공.

 

서버는 연결을 수신, 클라이언트는 서버에 연결을 요청.

 

이때 서버와 클라이언트는 유일한 IP주소와 포트 조합을 가져야 한다.

 

node.js의 net module socket은 전송 제어 프로토콜 TCP를 사용해 원시 데이터를 전송.

 

 

TCP 프로토콜은 데이터를 패키징하고 지점 간 데이터 전송 성공 여부를 보장.

 

net module은 요청을 처리할 TCP 서버 및 요청을 만들 TCP소켓 클라이언트를 위한 Framework를 제공.

 

 

Server.js

var net = require('net'),
    sockets = [];

var server = net.createServer(function (client) {
    client.setEncoding('utf8');
    client.setTimeout(500);
    client.on('data', function (data) {
        for (var i = 0; i < sockets.length; i++) {
            sockets[i].write(data);
        }
    });
    client.on('error', function () {
        //console.log(`error`);
    });
    client.on('close', function () {
        sockets.pop();
        console.log(' close ㅂㅂ');
    });
    client.on('timeout', function () {});
    client.write('hihi');
    sockets.push(client);
});

server.on('error', function (error) {

});
server.listen(2222, function () {

    var serverInfo = server.address();
    var serverInfoJson = JSON.stringify(serverInfo);
    console.log('listen server : ' + serverInfoJson);
    server.on('close', function () {
        console.log('server closed.');
    });
    server.on('connection', function () {
        console.log(`누가드르와따`);
    });
});

간단하게 서버를 열어보았다.

 

사용한 함수를 설명하게따.

var net = require('net');
//net module을 가져왔다. 안에 있는 함수를 사용하면 된다.

var net_server = net.createServer('option',function(){
    /*내용물
    TCP 서버를 생성한다.
    var net_server = net.createServer('option','connectionListener');
    connection Listener 매개변수는 자동으로 connection 이벤트의 리스너로 추가된다.
    */
});

net을 가져와서 서버를 생성했다.

 

var net_server = net.createServer('option','connectionListener');
var net_server = net.createServer('host','connectionListener');
var net_server = net.createServer('path','connectionListener');
//새로운 소켓 객체를 생성하고 해당위치에 소켓을 연다.
//소켓이 설정되면 connection이벤트가 발생하고 
//connection listener 매개변수는 connection이벤트에 대한 리스너로서 추가된다.

create server는 위와같이 활용 할 수 있다.

 

net_server.listen(port,host,backlog,callback);
net_server.listen(path,callback);
net_server.listen(handle,callback);

/서버가 시작되면 listening이벤트가 발생되고 callback 매개변수는 listening 이벤트에대한 리스너로서 추가됨.

지정된 서버의 커넥션 연결을 시작한다.

 

net_server.close(callback);
//새로운 커넥션 연결을 중단하고 기존의 커넥션만 유지한다.
//그리고 모든 커넥션이 종료되었을 때 서버를 닫는다.
//서버는 'close'이벤트를 발생시키고 선택적으로 'close'를 받을수 있는 콜백을 매개변수로 정할 수 있다.

닫는거

 

net_server.address();
//ip주소와 포트번호와 같은 서버정보를 운영체제로부터 가져온다.
//참고로 listening이벤트가 발생한 후에만 메소드 호출이 가능하다.

운영체제한테서 주소정보를 가져옴.

 

net_server.maxConnections = 2
//서버에 연결되는 커넥션의 최대수를 정하는 프로퍼티
/*
저렇게 설정하고 포트를 열고 찍어보면
console.log(`서버 열림 address : ${serverInfo.address} port : ${serverInfo.port} max : ${server.maxConnections}`);
< 설정안했을경우
서버 열림 address : :: port : 2222 max : undefined
< 설정했을경우
서버 열림 address : :: port : 2222 max : 2
*/

서버의 연결 수가 많아지면 속성을 설정하여 연결을 거부한다.

child_process.fork()를 가진 소켓을 보낸 후에 이 옵션을 사용하지 않는 것이 좋다.

 

net_server.on(event,listen);
//예제 아래와 같이 사용하면 된다.
net_server.on('listening',function(){ /* 내용물 */});
net_server.on('error',function(){ /* 내용물 */});
net_server.on('connection',function(){ /* 내용물 */});
net_server.on('close',function(){ /* 내용물 */});
event description
listening server.listen 메소드가 호출 되었을 경우
connection 새로운 커넥션이 만들어질 경우
close 서버가 닫힐 경우
error 에러가 발생할 경우

 

 

 

참고 : https://www.slideshare.net/seogi1004/net-16754032

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

사이트의 정보

코딩하렴

으렴

활동하기