nodeJS 의 TCP 모듈 net

10546 단어 JS
TCP 서 비 스 는 네트워크 응용 에서 매우 흔히 볼 수 있 는데 현재 대부분의 응용 은 TCP 를 바탕 으로 구 축 된 것 이다.net 모듈 은 TCP 네트워크 프로 그래 밍 에 사용 되 는 비동기 네트워크 포장 기 를 제공 합 니 다. 서버 와 클 라 이언 트 를 만 드 는 방법 을 포함 합 니 다.본 고 는 nodeJS 중의 net 모듈 을 상세 하 게 소개 할 것 이다.
 
IP 테스트
【net.isIP(input)】
IP 주소 로 입력 했 는 지 테스트 합 니 다.문자열 이 잘못 되 었 을 때 0 을 되 돌려 줍 니 다.IPV 4 의 경우 4, IPV 6 의 경우 6 로 되 돌아 갑 니 다.
var net = require('net');
console.log(net.isIP('1.1.1.1'));//4console.log(net.isIP('1.1'));//0console.log(net.isIP('AD80::ABAA:0000:00C2:0002'));//6

【net.isIPv4(input)】
입력 한 주소 가 IPV 4 이면 true 로 돌아 갑 니 다. 그렇지 않 으 면 false 로 돌아 갑 니 다.
var net = require('net');
console.log(net.isIPv4('1.1.1.1'));//trueconsole.log(net.isIPv4('1.1'));//false

【net.isIPv6(input)】
입력 한 주소 가 IPV 6 이면 true 로 돌아 갑 니 다. 그렇지 않 으 면 false 로 돌아 갑 니 다.
var net = require('net');
console.log(net.isIPv6('1.1.1.1'));//trueconsole.log(net.isIPv6('AD80::ABAA:0000:00C2:0002'));//true

 
서버
【net.createServer([options][, connectionListener])】
TCP 서버 를 만 듭 니 다. 매개 변 수 는 다음 과 같 습 니 다.
options
    allowHalfOpen: false(  ),   true,    socket  FIN  socket      FIN 。socket        (   )
    pauseOnConnect: false(  ),   true,            socket    。                ,         。  resume()    socket     
connectionListener     'connection'        
var server = net.createServer(function() {

});

【server.listen(port[, host][, backlog][, callback])】
지정 한 포트 포트 포트 와 호스트 호스트 호스트 의 연결 을 받 아들 이기 시작 합 니 다.호스트 host 를 무시 하면 서버 는 IPv 4 주소 (INADDR ANY) 의 직접 연결 을 받 습 니 다.포트 가 0 이면 무 작위 포트 를 할당 합 니 다.
적 체 량 (Backlog) 은 대기 열 을 연결 하 는 최대 길이 입 니 다.실제 길 이 는 운영 체제 가 sysctl 을 통 해 설정 합 니 다. 예 를 들 어 Liux 의 tcpmax_syn_backlog 와 somxconn.이 인자 의 기본 값 은 511 입 니 다.
서버 가 바 인 딩 되 었 을 때 'listening' 이벤트 가 발생 합 니 다.마지막 인자 콜백 은 'listening' 이벤트 의 모니터 가 될 것 입 니 다.
일부 사용자 들 은 다른 서버 가 요청 한 포트 에서 실행 되 고 있 음 을 나타 내 는 EADDRINUSE 오 류 를 만 날 수 있 습 니 다.이 상황 을 처리 하 는 방법 은 좀 있다 가 다시 시도 하 는 것 이다.
server.listen(6000);

【server.close([callback])】
서버 가 새로운 연결 을 받 지 않 고 기 존 연결 을 유지 합 니 다.모든 연결 이 끝 날 때 서버 가 닫 히 고 'close' 이벤트 가 발생 합 니 다.너 는 'close' 사건 을 감청 하기 위해 반전 함 수 를 보 낼 수 있다.존재 하면 리 셋 함수, 오류 (있 으 면) 를 유일한 매개 변수 로 호출 합 니 다.
【server.address()】
운영 체 제 는 연 결 된 주소, 프로 토 콜 족 명, 서버 포트 를 되 돌려 줍 니 다.시스템 에 연 결 된 포트 를 찾 을 때 유용 합 니 다.
[주의] 'listening' 이벤트 가 발생 하기 전에 server. address () 를 호출 하지 마 십시오.
server.listen(function() {    //{ address: '::', family: 'IPv6', port: 53806 }    console.log(server.address());
});

【server.maxConnections】
이 옵션 을 설정 하면 서버 연결 수가 수 를 초과 할 때 새 연결 을 거부 합 니 다.
이미 childprocess. fork () 방법 으로 socket 을 하위 프로 세 스에 보 내 면 이 옵션 을 추천 하지 않 습 니 다.
【server.getConnections(callback)】
비동기 가 서버 의 현재 활성 화 된 연결 수 를 가 져 옵 니 다.소켓 이 하위 프로 세 스에 보 내야 유효 합 니 다.
리 셋 함 수 는 2 개의 인자 err 와 count 가 있 습 니 다.
server.getConnections(function(err,count){
    console.log(count);//0})

[이벤트 리 스 닝]
서버 가 server. listen 바 인 딩 을 호출 하면 터치 합 니 다.
[이벤트 연결]
{Socket object}     

새 연결 이 생 성 되면 실 행 됩 니 다.socket 은 net. socket 인 스 턴 스 입 니 다.
【 이벤트 close 】
서버 종료 시 터치
[주의] 연결 이 존재 한다 면 이 사건 은 모든 연결 이 닫 힐 때 까지 촉발 되 지 않 습 니 다.
[이벤트 오류]
오류 발생 시 터치
 
클 라 이언 트
【net.connect(options[, connectionListener])】
【net.createConnection(options[, connectionListener])】
connect () 의 별명 은 createConnection () 방법 입 니 다.
이 방법 은 새로운 'net. Socket' 을 되 돌려 주 고 지정 한 주소 와 포트 에 연결 합 니 다.socket 이 만들어 지면 'connect' 이벤트 가 실 행 됩 니 다.'net. Socket' 과 같은 방법 이 있어 요.
TCP sockets 에 대해 매개 변수 options 는 다음 과 같 습 니 다.
port:        Port    (  )
host:           。   'localhost'localAddress:            
localPort:            
family : IP    。   4

이 지역 socket 에 대해 매개 변수 options 는 다음 과 같 습 니 다.
path:          (  )
var client = net.connect({port: 5000}, function() {});

 
Socket
【new net.Socket([options])】
새로운 socket 대상 만 들 기
options 대상 은 다음 과 같은 기본 값 이 있 습 니 다:
{ fd: null
  allowHalfOpen: false,
  readable: false,
  writable: false}

인자 fd 는 존재 하 는 파일 설명 자 를 지정 할 수 있 습 니 다.readable 과 (또는) writable 을 true 로 설정 하여 이 socket 에서 읽 거나 쓸 수 있 도록 합 니 다 (인자 fd 만 유효 할 때)
【socket.connect(port[, host][, connectListener])】
【socket.connect(path[, connectListener])】
들 어 오 는 socket 을 사용 하여 연결 을 엽 니 다.포트 포트 와 호스트 host 를 지정 하면 TCP socket 이 socket 을 엽 니 다.인자 host 를 무시 하면 기본 값 은 localhost 입 니 다.path 가 지정 되면 socket 은 지정 한 경로 의 유 닉 스 socket 으로 열 립 니 다.
인자 connect Listener 는 'connect' 이벤트 에 모니터 로 추 가 됩 니 다.
【socket.write(data[, encoding][, callback])】
socket 에 데 이 터 를 보 냅 니 다.두 번 째 매개 변 수 는 문자열 의 인 코딩 을 지정 합 니 다. 기본 값 은 UTF 8 인 코딩 입 니 다.
모든 데이터 가 커 널 버퍼 에 성공 적 으로 새로 고침 되면 트 루 로 돌아 갑 니 다.데이터 의 전부 또는 일부 가 사용자 메모리 에 있다 면 false 로 돌아 갑 니 다.버퍼 가 비어 있 을 때 'drain' 을 터치 합 니 다.
데이터 가 최종 적 으로 완전 하 게 기록 되 었 을 때 선택 할 수 있 는 콜백 매개 변 수 는 실행 되 지만 바로 실행 되 는 것 은 아 닙 니 다.
【socket.end([data][, encoding])】
소켓 을 반 닫 습 니 다.예 를 들 어 FIN 가방 을 보 냅 니 다.서버 에서 데 이 터 를 보 내 고 있 을 수도 있 습 니 다.
인자 data 가 비어 있 지 않 으 면 socket. write (data, encoding) 를 호출 한 후 socket. end () 를 호출 하 는 것 과 같 습 니 다.
【socket.destroy()】
이 소켓 에 I / O 활동 이 없 는 지 확인 하 십시오.오류 가 발생 한 상황 에서 만 필요 하 다.
【socket.pause()】
데이터 읽 기 일시 정지.다 시 는 data 사건 을 촉발 하지 않 겠 다 는 것 이다.업로드 제어 에 유용 합 니 다.
【socket.resume()】
pause () 를 호출 한 후 읽 기 데 이 터 를 복원 하려 고 합 니 다.
【socket.setTimeout(timeout[, callback])】
socket 유 휴 시간 이 timeout 밀리초 를 초과 하면 socket 을 시간 초과 로 설정 합 니 다.남 은 시간 초과 이 벤트 를 실행 할 때 socket 은 'timeout' 이 벤트 를 받 지만 연결 이 끊 기지 않 습 니 다.사용 자 는 end () 또는 destroy () 이 socket 을 수 동 으로 호출 해 야 합 니 다.
timeout = 0 이면 기 존의 유 휴 시간 초과 가 비활성 화 됩 니 다.선택 한 콜백 인 자 는 'timeout' 이벤트 의 일회용 모니터 로 추 가 됩 니 다.
【socket.setNoDelay([noDelay])】
나 그 (Nagle) 알고리즘 을 사용 하지 않 습 니 다.기본적으로 TCP 연결 은 나 그 알고리즘 을 사용 합 니 다. 보 내기 전에 데 이 터 를 버퍼 링 합 니 다.noDelay 를 true 로 설정 하면 socket. write () 를 호출 할 때 데 이 터 를 즉시 보 냅 니 다.noDelay 기본 값 true
【socket.setKeepAlive([enable][, initialDelay])】
긴 연결 기능 을 사용 하지 않 거나 사용 합 니 다. 첫 번 째 소켓 에 있 는 긴 연결 probe 를 보 내기 전에 초기 지연 시간 을 선택 할 수 있 습 니 다.묵인 false
initialDelay (밀리초) 를 설정 하여 받 은 마지막 패 킷 과 첫 번 째 긴 연결 probe 사이 의 지연 시간 을 설정 합 니 다.initial Delay 를 0 으로 설정 하면 기본 값 (또는 이전) 을 유지 합 니 다.기본 값 0
【socket.address()】
운영 체 제 는 바 인 딩 된 주소, 프로 토 콜 족 이름과 서버 포트 를 되 돌려 줍 니 다.돌아 오 는 대상 은 3 개의 속성 이 있 습 니 다. 예 를 들 어 {port: 12346, 패 밀리: 'IPv 4', address: '127.0.0.1'}
【socket.remoteAddress】
원 격 IP 주소 문자열
【socket.remoteFamily】
원 격 IP 프로 토 콜 족 문자열
【socket.remotePort】
원 격 포트, 숫자 표시
【socket.localAddress】
원 격 클 라 이언 트 가 연결 하고 있 는 로 컬 IP 주소, 문자열 표시
【socket.localPort】
로 컬 포트 주소, 숫자 표시
【socket.bytesRead】
받 은 바이트 수
【socket.bytesWritten】
보 낸 바이트 수
[이벤트 조회]
도 메 인 이름 을 분석 한 후 연결 하기 전에 이 사건 을 촉발 합 니 다.UNIX sokcet 에는 적용 되 지 않 습 니 다.
err {Error | Null}     
address {String} IP   。
family {String | Null}     

【 이벤트 연결 】
소켓 연결 을 성공 적 으로 만 들 었 을 때 터치 합 니 다.
【 이벤트 데이터 】
{Buffer object}

데 이 터 를 받 았 을 때 터치 합 니 다.인자 data 는 Buffer 나 String 일 수 있 습 니 다.
Socket 이 'data' 이 벤트 를 실행 할 때 모니터 가 없 으 면 데이터 가 손 실 됩 니 다.
【 이벤트 종료 】
socket 다른 쪽 에서 FIN 패 키 지 를 보 낼 때 이 이벤트 가 실 행 됩 니 다.
[이벤트 타임 아웃]
socket 이 남 았 을 때 터치 합 니 다. socket 이 남 았 음 을 나 타 냅 니 다.사용 자 는 연결 을 수 동 으로 닫 아야 합 니 다.
[이벤트 드 레 인]
캐 시가 비어 있 을 때 터치 합 니 다.업로드 제어
[이벤트 오류]
오류 발생 시 발동
【 이벤트 close 】
had_error {Boolean}    socket     ,  true

socket 이 완전히 닫 혔 을 때 터치 합 니 다.매개 변수 haderror 는 boolean 입 니 다. 전송 오류 로 인해 socket 이 닫 혔 는 지 여 부 를 표시 합 니 다.
 
간이 서버
【 서버 】
//server.jsvar net = require('net') ;var server = net.createServer(function(socket) { 
    socket.write("Hi!
");     socket.on("data", function(data) {       console.log(data.toString());     });     socket.on("end", function() {       console.log(' !!!');     });     socket.on('error', function() {       console.log(' !!!');     }); }) ; server.listen(8080) ;

[클 라 이언 트]
//client.jsvar net = require('net') ;var client = net.connect({port: 8080},function(){
    client.name = '   1';
    client.write(client.name + '    !
');     client.end(client.name + '  !
');     client.on("data", function(data) {         console.log(data.toString());     }); });

 
간이 채 팅 방
【 서버 】
//chatServer.jsvar net = require('net');var i = 0;//     var clientList = [];var server = net.createServer(function(socket) {
    socket.name = '  ' + (++i);
    socket.write('【     】  ' + socket.name + '
');    //     clientList.push(socket);      function showClients(){         console.log('【 】:');        for(var i=0;i

【 】

//chatClient.jsvar net = require('net');
process.stdin.resume();
process.stdin.setEncoding('utf8');var client = net.connect({port: 8080},function(){
    console.log('【    】      ');
    process.stdin.on('data',function(data){
        client.write(data);
    })
    client.on("data", function(data) {
        console.log(data.toString());
    });
    client.on('end', function() {
        console.log('【    】     ');
        process.exit();
    });
    client.on('error', function() {
        console.log('【    】     ');
        process.exit();
    });
});

좋은 웹페이지 즐겨찾기