Node.js 학습 의 TCP/IP 데이터 통신(인 스 턴 스 설명)

1.net 모듈 을 사용 하여 TCP 기반 데이터 통신 실현
TCP 서버 와 TCP 클 라 이언 트 간 의 통신 을 실현 하기 위 한 net 모듈 을 제공 합 니 다.
1.1 TCP 서버 생 성
Node.js 에서 net 모듈 을 이용 하여 TCP 서버 를 만 듭 니 다.

var server = net.createServer([options],[connectionListener])
//options:false TCP              FIN        FIN 
   true TCP              FIN       FIN ,   TCP               ,               。       end     socket  。   false
connectionListener:                         
function(socket){
 //      
}
매개 변수 값 이 TCP 서버 감청 인 socket 포트 대상 createServer 방법 으로 생 성 된 TCP 서버 를 되 돌려 줍 니 다.
클 라 이언 트 와 서버 가 연결 되 었 을 때 connection 이벤트 가 발생 하면 다음 방식 으로 리 셋 함 수 를 실행 할 수 있 습 니 다.

server.on('connection',function(socket){
//      
})

TCP 서버 를 만 든 후,listen 방법 으로 서버 에 클 라 이언 트 연결 을 감청 하기 시작 하 라 고 알 립 니 다.

server.listen(port,[host],[backlog],[callback])
//port          ,
host:       IP      ,    ,           IPv4        
backlog:                    
callback:      

server.listen(path,[callback])
//server:      unix      
path:         ,   listening  ,        callback

server.listenting(handle,[callback])
//server     TCP   
handle:       socket  (        TCP     ,socket    ,     )
예 를 들 어 TCP 서버 를 만 듭 니 다:

var net = require('net')
var server = net.createServer(function(socket){
 console.log('            ')
})
server.listen(8431,'localhost',function(){
 console.log('        ')
})

실행 후 다음 과 같은 결 과 를 얻 을 수 있 습 니 다:

telnet 를 이용 하여 대응 하 는 서버 에 접근 하기:

telnet localhost 8431
나타 날 결 과 는 다음 과 같다.

socket 포트 대상 예:

var net = require('net')
var file = require('fs').createWriteStream('./message.txt');
var server = net.createServer(function(socket){
console.log('            ')
server.getConnections(function(err,count){
 console.log('    %d      。',count);
 server.maxConnections = 4;
 console.log('TCP          %d',server.maxConnections);
 
})

// server.close(function(){
 // console.log('TCP      。');
// })
})
server.listen(8431,'localhost',function(){
console.log('        ')

})
server.on('connection',function(socket){
address = socket.address();
console.log('         %j',address);
socket.pipe(file);
socket.setEncoding('utf8');
socket.on('data',function(data){
 console.log(data.toString());
 console.log('    %d    。',socket.bytesRead);
});
socket.on('end',function(){
 file.end('  ')
 console.log('        。')
})

socket.pause();
setTimeout(function(){
 console.log('*************')
 socket.resume();
 socket.pipe(file,{end:false});
},30*1000);
// socket.pipe(file,{end:false});
// setTimeout(function(){
 // file.end('  。');
 // socket.unpipe(file);
// },5000);
socket.setTimeout(10*1000);
socket.on('timeout',function(){
 console.log('       ');
 socket.setTimeout(0);
})

})
1.2 TCP 클 라 이언 트 만 들 기
TCP 클 라 이언 트 생 성 예:

var net = require("net");
var client = new net.Socket();
client.setEncoding('utf8');
client.connect(8431,'localhost',function(){
console.log('       ');
client.write('  ');
console.log('     %d  ',client.bytesWritten);
client.end('  ')
console.log('     %d  ',client.bytesWritten);
// setTimeout(function(){
 // client.end('  ');  
// },10*1000)

});
client.on('data',function(data){
//console.log('            : '+data);
console.log('            ');
})
client.on('error',function(err){
console.log('                    ,     %s',err.code);
client.destroy();
})
동시에 대응 하 는 서버 를 만들어 야 합 니 다:

var net = require('net');
var fs = require('fs');
var server = net.createServer();
server.on('connection',function(socket){
console.log('             ');
socket.setEncoding('utf8');
var readStream = fs.createReadStream('./server.js');
readStream.on('data',function(data){
 var flag = socket.write(data);
 console.log('write       :'+flag);
 console.log('          %d  。',socket.bufferSize);
})
socket.on('data',function(data){
 console.log('           :'+data);
 socket.write('    :'+data);
})
socket.on('error',function(err){
 console.log('                ,     %s',err.code);
 socket.destroy();
})
socket.on('end',function(){
 console.log('        。');
 server.unref();
})
socket.on('close',function(had_error){
 if(had_error){
  console.log('        socket     。');
  server.unref();
 }else{
  console.log('socket       。');
 }
})
server.getConnections(function(err,count){
 if(count==2)
  server.close();
});
});

server.listen(8431,'localhost');
server.on('close',function(){
console.log('TCP      。');
})
Node.js 에서 다음 방법 을 이용 하여 클 라 이언 트 나 서버 에 탐지 패 키 지 를 계속 보 내 연결 상 태 를 확인 할 수 있 습 니 다.

socket.setKeepAlive([enable],[initialDelay])
//enable:true:  Keep-alive  ,            ,            
initialDelay:    (  )

이상 의 Node.js 학습 의 TCP/IP 데이터 통신(사례 설명)은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 께 참고 가 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기