Node.js 학습 의 TCP/IP 데이터 통신(인 스 턴 스 설명)
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 데이터 통신(사례 설명)은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 께 참고 가 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Grunt에서 즉석 템플릿 엔진이 필요했기 때문에 마침내 만들었습니다.jade 라든지 ejs 라고도 좋지만, 보다 심플하게 하고 싶다고 생각해. json을 떨어 뜨렸다. 플레이스홀더(:TAG)를 마련해, 이런 HTML 만들어 둔다. template.html 자리 표시자의 문자열을 키로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.