Skip to content

Net

[안정성: 2 - 안정적]

안정성: 2 안정성: 2 - 안정적

소스 코드: lib/net.js

node:net 모듈은 스트림 기반 TCP 또는 IPC 서버(net.createServer()) 및 클라이언트(net.createConnection())를 생성하기 위한 비동기 네트워크 API를 제공합니다.

다음과 같이 접근할 수 있습니다.

js
import net from 'node:net'
js
const net = require('node:net')

IPC 지원

[기록]

버전변경 사항
v20.8.0\0abstract와 같은 추상 Unix 도메인 소켓 경로에 대한 바인딩 지원. Node.js \< v20.4.0에서는 '\0'을 바인딩할 수 있습니다.

node:net 모듈은 Windows에서 명명된 파이프와 다른 운영 체제에서 Unix 도메인 소켓을 사용하여 IPC를 지원합니다.

IPC 연결 경로 식별

net.connect(), net.createConnection(), server.listen()socket.connect()는 IPC 엔드포인트를 식별하기 위해 path 매개변수를 사용합니다.

Unix에서 로컬 도메인은 Unix 도메인이라고도 합니다. 경로는 파일 시스템 경로명입니다. 경로명의 길이가 sizeof(sockaddr_un.sun_path)의 길이보다 크면 오류가 발생합니다. 일반적인 값은 Linux에서 107바이트이고 macOS에서 103바이트입니다. Node.js API 추상화가 Unix 도메인 소켓을 생성하면 Unix 도메인 소켓도 연결 해제합니다. 예를 들어, net.createServer()는 Unix 도메인 소켓을 생성할 수 있으며 server.close()는 이를 연결 해제합니다. 그러나 사용자가 이러한 추상화 외부에서 Unix 도메인 소켓을 생성하면 사용자가 제거해야 합니다. Node.js API가 Unix 도메인 소켓을 생성했지만 프로그램이 충돌하는 경우에도 동일하게 적용됩니다. 즉, Unix 도메인 소켓은 파일 시스템에서 볼 수 있으며 연결 해제될 때까지 지속됩니다. Linux에서는 경로 시작 부분에 \0을 추가하여 Unix 추상 소켓(\0abstract와 같은)을 사용할 수 있습니다. Unix 추상 소켓의 경로는 파일 시스템에서 볼 수 없으며 소켓에 대한 모든 열린 참조가 닫히면 자동으로 사라집니다.

Windows에서 로컬 도메인은 명명된 파이프를 사용하여 구현됩니다. 경로는 \\?\pipe\ 또는 \\.\pipe\의 항목을 참조해야 합니다. 모든 문자가 허용되지만 후자는 .. 시퀀스 해결과 같은 파이프 이름에 대한 일부 처리를 수행할 수 있습니다. 보기에 따라 파이프 네임스페이스는 평면입니다. 파이프는 지속되지 않습니다. 파이프에 대한 마지막 참조가 닫히면 제거됩니다. Unix 도메인 소켓과 달리 Windows는 소유 프로세스가 종료될 때 파이프를 닫고 제거합니다.

JavaScript 문자열 이스케이프에는 다음과 같이 추가 백슬래시 이스케이프를 사용하여 경로를 지정해야 합니다.

js
net.createServer().listen(path.join('\\\\?\\pipe', process.cwd(), 'myctl'))

클래스: net.BlockList

추가됨: v15.0.0, v14.18.0

BlockList 객체는 특정 IP 주소, IP 범위 또는 IP 서브넷에 대한 인바운드 또는 아웃바운드 액세스를 비활성화하는 규칙을 지정하기 위해 일부 네트워크 API와 함께 사용할 수 있습니다.

blockList.addAddress(address[, type])

추가됨: v15.0.0, v14.18.0

주어진 IP 주소를 차단하는 규칙을 추가합니다.

blockList.addRange(start, end[, type])

추가됨: v15.0.0, v14.18.0

start (포함)에서 end (포함)까지의 IP 주소 범위를 차단하는 규칙을 추가합니다.

blockList.addSubnet(net, prefix[, type])

추가됨: v15.0.0, v14.18.0

  • net <string> | <net.SocketAddress> 네트워크 IPv4 또는 IPv6 주소.
  • prefix <number> CIDR 접두사 비트 수. IPv4의 경우, 이 값은 0에서 32 사이여야 합니다. IPv6의 경우, 이 값은 0에서 128 사이여야 합니다.
  • type <string> 'ipv4' 또는 'ipv6'. 기본값: 'ipv4'.

서브넷 마스크로 지정된 IP 주소 범위를 차단하는 규칙을 추가합니다.

blockList.check(address[, type])

추가된 버전: v15.0.0, v14.18.0

주어진 IP 주소가 BlockList에 추가된 규칙 중 하나와 일치하면 true를 반환합니다.

js
const blockList = new net.BlockList()
blockList.addAddress('123.123.123.123')
blockList.addRange('10.0.0.1', '10.0.0.10')
blockList.addSubnet('8592:757c:efae:4e45::', 64, 'ipv6')

console.log(blockList.check('123.123.123.123')) // 출력: true
console.log(blockList.check('10.0.0.3')) // 출력: true
console.log(blockList.check('222.111.111.222')) // 출력: false

// IPv4 주소에 대한 IPv6 표기법도 작동합니다:
console.log(blockList.check('::ffff:7b7b:7b7b', 'ipv6')) // 출력: true
console.log(blockList.check('::ffff:123.123.123.123', 'ipv6')) // 출력: true

blockList.rules

추가된 버전: v15.0.0, v14.18.0

차단 목록에 추가된 규칙 목록입니다.

BlockList.isBlockList(value)

추가된 버전: v23.4.0

  • value <any> 모든 JS 값
  • valuenet.BlockList이면 true를 반환합니다.

클래스: net.SocketAddress

추가된 버전: v15.14.0, v14.18.0

new net.SocketAddress([options])

추가된 버전: v15.14.0, v14.18.0

  • options <Object>
    • address <string> IPv4 또는 IPv6 문자열 형식의 네트워크 주소. 기본값: family'ipv4'인 경우 '127.0.0.1'; family'ipv6'인 경우 '::'.
    • family <string> 'ipv4' 또는 'ipv6' 중 하나. 기본값: 'ipv4'.
    • flowlabel <number> family'ipv6'인 경우에만 사용되는 IPv6 플로우 레이블.
    • port <number> IP 포트.

socketaddress.address

추가된 버전: v15.14.0, v14.18.0

socketaddress.family

추가된 버전: v15.14.0, v14.18.0

socketaddress.flowlabel

추가된 버전: v15.14.0, v14.18.0

socketaddress.port

추가된 버전: v15.14.0, v14.18.0

SocketAddress.parse(input)

추가된 버전: v23.4.0

  • input <string> IP 주소와 선택적 포트를 포함하는 입력 문자열(예: 123.1.2.3:1234 또는 [1::1]:1234).
  • 반환: <net.SocketAddress> 파싱에 성공하면 SocketAddress를 반환합니다. 그렇지 않으면 undefined를 반환합니다.

클래스: net.Server

추가된 버전: v0.1.90

이 클래스는 TCP 또는 IPC 서버를 생성하는 데 사용됩니다.

new net.Server([options][, connectionListener])

net.Server는 다음 이벤트를 가진 EventEmitter입니다.

이벤트: 'close'

추가된 버전: v0.5.0

서버가 닫힐 때 발생합니다. 연결이 있는 경우 모든 연결이 종료될 때까지 이 이벤트가 발생하지 않습니다.

이벤트: 'connection'

추가된 버전: v0.1.90

새로운 연결이 이루어질 때 발생합니다. socketnet.Socket의 인스턴스입니다.

이벤트: 'error'

추가된 버전: v0.1.90

오류가 발생할 때 발생합니다. net.Socket과 달리, 'close' 이벤트는 server.close()가 수동으로 호출되지 않는 한 이 이벤트 직후에 직접 발생하지 않습니다. server.listen()에 대한 논의의 예시를 참조하십시오.

이벤트: 'listening'

추가된 버전: v0.1.90

server.listen() 호출 후 서버가 바인딩되었을 때 발생합니다.

이벤트: 'drop'

추가된 버전: v18.6.0, v16.17.0

연결 수가 server.maxConnections 임계값에 도달하면 서버는 새 연결을 삭제하고 대신 'drop' 이벤트를 발생시킵니다. TCP 서버인 경우 인수는 다음과 같고, 그렇지 않으면 인수는 undefined입니다.

  • data <Object> 이벤트 리스너에 전달된 인수입니다.
    • localAddress <string> 로컬 주소입니다.
    • localPort <number> 로컬 포트입니다.
    • localFamily <string> 로컬 패밀리입니다.
    • remoteAddress <string> 원격 주소입니다.
    • remotePort <number> 원격 포트입니다.
    • remoteFamily <string> 원격 IP 패밀리입니다. 'IPv4' 또는 'IPv6'.

server.address()

[기록]

버전변경 사항
v18.4.0family 속성이 이제 숫자 대신 문자열을 반환합니다.
v18.0.0family 속성이 이제 문자열 대신 숫자를 반환합니다.
v0.1.90추가됨: v0.1.90

IP 소켓에서 수신 중인 경우 운영 체제에서 보고한 바인딩된 address, 주소 family 이름 및 서버의 port를 반환합니다(OS 할당 주소를 가져올 때 할당된 포트를 찾는 데 유용함): { port: 12346, family: 'IPv4', address: '127.0.0.1' }.

파이프 또는 Unix 도메인 소켓에서 수신 중인 서버의 경우 이름이 문자열로 반환됩니다.

js
const server = net
  .createServer(socket => {
    socket.end('goodbye\n')
  })
  .on('error', err => {
    // 여기에서 오류를 처리합니다.
    throw err
  })

// 임의의 사용하지 않는 포트를 가져옵니다.
server.listen(() => {
  console.log('opened server on', server.address())
})

server.address()'listening' 이벤트가 발생하기 전이나 server.close()를 호출한 후에는 null을 반환합니다.

server.close([callback])

추가됨: v0.1.90

서버가 새 연결을 허용하지 않도록 중지하고 기존 연결을 유지합니다. 이 함수는 비동기적이며, 모든 연결이 종료되고 서버가 'close' 이벤트를 발생하면 서버가 최종적으로 닫힙니다. 선택적 callback'close' 이벤트가 발생하면 호출됩니다. 해당 이벤트와 달리 서버가 닫혔을 때 열려 있지 않으면 Error를 유일한 인수로 하여 호출됩니다.

server[Symbol.asyncDispose]()

추가된 버전: v20.5.0, v18.18.0

[안정성: 1 - 실험적]

안정성: 1 안정성: 1 - 실험적

server.close()를 호출하고 서버가 닫혔을 때 완료되는 프로미스를 반환합니다.

server.getConnections(callback)

추가된 버전: v0.9.7

서버에서 동시 연결 수를 비동기적으로 가져옵니다. 소켓이 포크로 전송되었을 때 작동합니다.

콜백은 두 개의 인자 errcount를 받아야 합니다.

server.listen()

연결을 수신하기 시작하는 서버를 시작합니다. net.Server는 수신하는 내용에 따라 TCP 또는 IPC 서버일 수 있습니다.

가능한 시그니처:

이 함수는 비동기적입니다. 서버가 수신을 시작하면 'listening' 이벤트가 발생합니다. 마지막 매개변수 callback'listening' 이벤트의 리스너로 추가됩니다.

모든 listen() 메서드는 대기 중인 연결 큐의 최대 길이를 지정하기 위해 backlog 매개변수를 사용할 수 있습니다. 실제 길이는 Linux의 tcp_max_syn_backlogsomaxconn과 같은 sysctl 설정을 통해 OS에 의해 결정됩니다. 이 매개변수의 기본값은 511(512 아님)입니다.

모든 net.SocketSO_REUSEADDR로 설정됩니다. 자세한 내용은 socket(7)을 참조하십시오.

첫 번째 server.listen() 호출 중 오류가 발생했거나 server.close()가 호출된 경우에만 server.listen() 메서드를 다시 호출할 수 있습니다. 그렇지 않으면 ERR_SERVER_ALREADY_LISTEN 오류가 발생합니다.

수신할 때 발생하는 가장 일반적인 오류 중 하나는 EADDRINUSE입니다. 이 오류는 다른 서버가 요청된 port/path/handle에서 이미 수신 중일 때 발생합니다. 이 문제를 처리하는 한 가지 방법은 일정 시간이 지난 후 다시 시도하는 것입니다.

js
server.on('error', e => {
  if (e.code === 'EADDRINUSE') {
    console.error('Address in use, retrying...')
    setTimeout(() => {
      server.close()
      server.listen(PORT, HOST)
    }, 1000)
  }
})

server.listen(handle[, backlog][, callback])

추가된 버전: v0.5.10

이미 포트, 유닉스 도메인 소켓 또는 Windows 명명된 파이프에 바인딩된 지정된 handle에서 연결을 수신하는 서버를 시작합니다.

handle 객체는 서버, 소켓(기본 _handle 멤버가 있는 모든 것) 또는 유효한 파일 설명자인 fd 멤버가 있는 객체가 될 수 있습니다.

파일 설명자를 통한 수신은 Windows에서 지원되지 않습니다.

server.listen(options[, callback])

[기록]

버전변경 사항
v23.1.0reusePort 옵션이 지원됩니다.
v15.6.0AbortSignal 지원이 추가되었습니다.
v11.4.0ipv6Only 옵션이 지원됩니다.
v0.11.14추가된 버전: v0.11.14
  • options <Object> 필수. 다음 속성을 지원합니다.

    • backlog <number> server.listen() 함수의 공통 매개변수.
    • exclusive <boolean> 기본값: false
    • host <string>
    • ipv6Only <boolean> TCP 서버의 경우 ipv6Onlytrue로 설정하면 듀얼 스택 지원이 비활성화됩니다. 즉, 호스트 ::에 바인딩한다고 해서 0.0.0.0이 바인딩되지 않습니다. 기본값: false.
    • reusePort <boolean> TCP 서버의 경우 reusePorttrue로 설정하면 동일한 호스트의 여러 소켓이 동일한 포트에 바인딩할 수 있습니다. 들어오는 연결은 운영 체제에서 수신 소켓으로 분배합니다. 이 옵션은 Linux 3.9+, DragonFlyBSD 3.6+, FreeBSD 12.0+, Solaris 11.4 및 AIX 7.2.5+와 같은 일부 플랫폼에서만 사용할 수 있습니다. 기본값: false.
    • path <string> port가 지정된 경우 무시됩니다. IPC 연결을 위한 경로 식별을 참조하세요.
    • port <number>
    • readableAll <boolean> IPC 서버의 경우 파이프를 모든 사용자가 읽을 수 있도록 합니다. 기본값: false.
    • signal <AbortSignal> 수신 서버를 닫는 데 사용할 수 있는 AbortSignal입니다.
    • writableAll <boolean> IPC 서버의 경우 파이프를 모든 사용자가 쓸 수 있도록 합니다. 기본값: false.
  • callback <Function> 함수.

  • 반환값: <net.Server>

port가 지정되면 server.listen([port[, host[, backlog]]][, callback])과 동일하게 동작합니다. 그렇지 않고 path가 지정되면 server.listen(path[, backlog][, callback])과 동일하게 동작합니다. 둘 다 지정되지 않은 경우 오류가 발생합니다.

exclusivefalse(기본값)이면 클러스터 작업자는 동일한 기본 핸들을 사용하여 연결 처리 의무를 공유할 수 있습니다. exclusivetrue이면 핸들이 공유되지 않고 포트 공유 시도 시 오류가 발생합니다. 독점 포트에서 수신 대기하는 예는 아래에 나와 있습니다.

js
server.listen({
  host: 'localhost',
  port: 80,
  exclusive: true,
})

exclusivetrue이고 기본 핸들이 공유되는 경우 여러 작업자가 다른 백로그로 핸들을 쿼리할 수 있습니다. 이 경우 마스터 프로세스에 전달된 첫 번째 backlog가 사용됩니다.

루트 권한으로 IPC 서버를 시작하면 권한 없는 사용자가 서버 경로에 접근할 수 없게 될 수 있습니다. readableAllwritableAll을 사용하면 모든 사용자가 서버에 접근할 수 있습니다.

signal 옵션이 활성화된 경우 해당 AbortController에서 .abort()를 호출하는 것은 서버에서 .close()를 호출하는 것과 유사합니다.

js
const controller = new AbortController()
server.listen({
  host: 'localhost',
  port: 80,
  signal: controller.signal,
})
// 나중에 서버를 닫고 싶을 때.
controller.abort()

server.listen(path[, backlog][, callback])

추가된 버전: v0.1.90

지정된 path에서 연결을 수신 대기하는 IPC 서버를 시작합니다.

server.listen([port[, host[, backlog]]][, callback])

추가된 버전: v0.1.90

지정된 porthost에서 연결을 수신 대기하는 TCP 서버를 시작합니다.

port를 생략하거나 0인 경우 운영 체제는 임의의 사용되지 않은 포트를 할당하며, 이 포트는 'listening' 이벤트가 발생한 후 server.address().port를 사용하여 검색할 수 있습니다.

host를 생략하면 서버는 IPv6을 사용할 수 있는 경우 지정되지 않은 IPv6 주소 (::) 또는 그렇지 않은 경우 지정되지 않은 IPv4 주소 (0.0.0.0)에서 연결을 수락합니다.

대부분의 운영 체제에서 지정되지 않은 IPv6 주소 (::)를 수신 대기하면 net.Server지정되지 않은 IPv4 주소 (0.0.0.0)에서 수신 대기할 수 있습니다.

server.listening

Added in: v5.7.0

  • <boolean> 서버가 연결을 수신 중인지 여부를 나타냅니다.

server.maxConnections

[기록]

버전변경 사항
v21.0.0maxConnections0으로 설정하면 들어오는 모든 연결이 끊깁니다. 이전에는 Infinity로 해석되었습니다.
v0.2.0Added in: v0.2.0

연결 수가 server.maxConnections 임계값에 도달하면:

소켓이 child_process.fork()를 사용하여 자식에게 전송된 후에는 이 옵션을 사용하지 않는 것이 좋습니다.

server.dropMaxConnection

Added in: v23.1.0

연결 수가 [server.maxConnections][] 임계값에 도달하면 연결을 닫기 시작하려면 이 속성을 true로 설정하십시오. 이 설정은 클러스터 모드에서만 유효합니다.

server.ref()

Added in: v0.9.1

unref()의 반대입니다. 이전에 unref된 서버에서 ref()를 호출하면 해당 서버가 유일하게 남아 있는 서버인 경우에도 프로그램이 종료되지 않습니다(기본 동작). 서버가 ref된 경우 ref()를 다시 호출해도 아무런 효과가 없습니다.

server.unref()

Added in: v0.9.1

서버에서 unref()를 호출하면 이벤트 시스템에서 유일하게 활성 상태인 서버인 경우 프로그램이 종료될 수 있습니다. 서버가 이미 unref된 경우 unref()를 다시 호출해도 아무런 효과가 없습니다.

클래스: net.Socket

Added in: v0.3.4

이 클래스는 TCP 소켓 또는 스트리밍 IPC 엔드포인트(Windows에서는 명명된 파이프를 사용하고 다른 경우에는 Unix 도메인 소켓을 사용함)의 추상화입니다. 또한 EventEmitter입니다.

net.Socket은 사용자가 생성하여 서버와 직접 상호 작용하는 데 사용할 수 있습니다. 예를 들어 net.createConnection()에서 반환되므로 사용자는 이를 사용하여 서버와 통신할 수 있습니다.

또한 Node.js에서 생성되어 연결이 수신될 때 사용자에게 전달될 수도 있습니다. 예를 들어 net.Server에서 발생한 'connection' 이벤트의 수신자에게 전달되므로 사용자는 이를 사용하여 클라이언트와 상호 작용할 수 있습니다.

new net.Socket([options])

[연혁]

버전변경 사항
v15.14.0AbortSignal 지원이 추가되었습니다.
v12.10.0onread 옵션이 추가되었습니다.
v0.3.4추가됨: v0.3.4
  • options <Object> 사용 가능한 옵션은 다음과 같습니다.

    • allowHalfOpen <boolean> false로 설정하면 소켓은 읽기 측이 끝나면 쓰기 측을 자동으로 종료합니다. 자세한 내용은 net.createServer()'end' 이벤트를 참조하십시오. 기본값: false.

    • fd <number> 지정된 경우 주어진 파일 설명자로 기존 소켓을 래핑하고, 그렇지 않으면 새 소켓이 생성됩니다.

    • onread <Object> 지정된 경우 수신 데이터는 단일 buffer에 저장되고 소켓에 데이터가 도착하면 제공된 callback으로 전달됩니다. 이렇게 하면 스트리밍 기능이 데이터를 제공하지 않게 됩니다. 소켓은 'error', 'end', 'close'와 같은 이벤트를 평소와 같이 발생시킵니다. pause()resume()과 같은 메서드도 예상대로 작동합니다.

    • buffer <Buffer> | <Uint8Array> | <Function> 수신 데이터를 저장하는 데 사용할 재사용 가능한 메모리 청크 또는 그러한 메모리를 반환하는 함수입니다.

    • callback <Function> 이 함수는 수신 데이터의 모든 청크에 대해 호출됩니다. buffer에 기록된 바이트 수와 buffer에 대한 참조의 두 가지 인수가 전달됩니다. 이 함수에서 false를 반환하면 소켓이 암시적으로 pause()됩니다. 이 함수는 전역 컨텍스트에서 실행됩니다.

    • readable <boolean> fd가 전달될 때 소켓에서 읽기를 허용합니다. 그렇지 않으면 무시됩니다. 기본값: false.

    • signal <AbortSignal> 소켓을 파괴하는 데 사용할 수 있는 Abort 신호입니다.

    • writable <boolean> fd가 전달될 때 소켓에서 쓰기를 허용합니다. 그렇지 않으면 무시됩니다. 기본값: false.

  • 반환값: <net.Socket>

새 소켓 객체를 만듭니다.

새로 생성된 소켓은 TCP 소켓이거나 스트리밍 IPC 엔드포인트일 수 있으며, 무엇에 connect()하는지에 따라 달라집니다.

이벤트: 'close'

추가된 버전: v0.1.90

  • hadError <boolean> 소켓에 전송 오류가 있었으면 true입니다.

소켓이 완전히 닫히면 한 번 발생합니다. 인수 hadError는 소켓이 전송 오류로 인해 닫혔는지 여부를 나타내는 부울 값입니다.

이벤트: 'connect'

추가된 버전: v0.1.90

소켓 연결이 성공적으로 설정되면 발생합니다. net.createConnection()을 참조하세요.

이벤트: 'connectionAttempt'

추가된 버전: v21.6.0, v20.12.0

  • ip <string> 소켓이 연결을 시도하는 IP입니다.
  • port <number> 소켓이 연결을 시도하는 포트입니다.
  • family <number> IP의 패밀리입니다. IPv6의 경우 6 또는 IPv4의 경우 4일 수 있습니다.

새 연결 시도가 시작되면 발생합니다. socket.connect(options)에서 패밀리 자동 선택 알고리즘이 활성화된 경우 여러 번 발생할 수 있습니다.

이벤트: 'connectionAttemptFailed'

추가된 버전: v21.6.0, v20.12.0

  • ip <string> 소켓이 연결을 시도한 IP입니다.
  • port <number> 소켓이 연결을 시도한 포트입니다.
  • family <number> IP의 패밀리입니다. IPv6의 경우 6 또는 IPv4의 경우 4일 수 있습니다.
  • error <Error> 실패와 관련된 오류입니다.

연결 시도가 실패하면 발생합니다. socket.connect(options)에서 패밀리 자동 선택 알고리즘이 활성화된 경우 여러 번 발생할 수 있습니다.

이벤트: 'connectionAttemptTimeout'

추가된 버전: v21.6.0, v20.12.0

  • ip <string> 소켓이 연결을 시도한 IP 주소입니다.
  • port <number> 소켓이 연결을 시도한 포트 번호입니다.
  • family <number> IP 주소의 패밀리입니다. IPv6의 경우 6, IPv4의 경우 4일 수 있습니다.

연결 시도 시간이 초과되었을 때 발생합니다. 이 이벤트는 socket.connect(options)에서 패밀리 자동 선택 알고리즘이 활성화된 경우에만 (그리고 여러 번 발생할 수 있습니다) 발생합니다.

이벤트: 'data'

추가된 버전: v0.1.90

데이터가 수신될 때 발생합니다. data 인자는 Buffer 또는 String이 됩니다. 데이터의 인코딩은 socket.setEncoding()으로 설정됩니다.

Socket'data' 이벤트를 발생시킬 때 리스너가 없으면 데이터가 손실됩니다.

이벤트: 'drain'

추가된 버전: v0.1.90

쓰기 버퍼가 비워질 때 발생합니다. 업로드를 조절하는 데 사용할 수 있습니다.

참고: socket.write()의 반환 값.

이벤트: 'end'

추가된 버전: v0.1.90

소켓의 다른 쪽 끝에서 전송 종료 신호를 보내 소켓의 읽기 가능한 쪽을 종료할 때 발생합니다.

기본적으로 (allowHalfOpenfalse인 경우) 소켓은 전송 종료 패킷을 다시 보내고 보류 중인 쓰기 큐를 모두 쓰고 나면 파일 디스크립터를 파괴합니다. 그러나 allowHalfOpentrue로 설정된 경우 소켓은 자동으로 쓰기 가능한 쪽을 end()하지 않으므로 사용자가 임의의 양의 데이터를 쓸 수 있습니다. 연결을 닫으려면(즉, FIN 패킷을 다시 보내려면) 사용자가 명시적으로 end()를 호출해야 합니다.

이벤트: 'error'

추가된 버전: v0.1.90

오류가 발생했을 때 발생합니다. 'close' 이벤트는 이 이벤트 바로 뒤에 호출됩니다.

이벤트: 'lookup'

[기록]

버전변경 사항
v5.10.0host 매개변수가 이제 지원됩니다.
v0.11.3추가된 버전: v0.11.3

호스트 이름을 확인한 후 연결하기 전에 발생합니다. Unix 소켓에는 적용되지 않습니다.

이벤트: 'ready'

추가된 버전: v9.11.0

소켓을 사용할 준비가 되었을 때 발생합니다.

'connect' 직후에 트리거됩니다.

이벤트: 'timeout'

추가된 버전: v0.1.90

소켓이 비활성으로 인해 시간 초과되면 발생합니다. 이것은 소켓이 유휴 상태임을 알리는 용도일 뿐입니다. 사용자는 수동으로 연결을 닫아야 합니다.

참고: socket.setTimeout().

socket.address()

[기록]

버전변경 사항
v18.4.0family 속성은 이제 숫자가 아닌 문자열을 반환합니다.
v18.0.0family 속성은 이제 문자열이 아닌 숫자를 반환합니다.
v0.1.90추가된 버전: v0.1.90

운영 체제에서 보고한 대로 소켓의 바인딩된 address, 주소 family 이름 및 port를 반환합니다: { port: 12346, family: 'IPv4', address: '127.0.0.1' }

socket.autoSelectFamilyAttemptedAddresses

추가된 버전: v19.4.0, v18.18.0

이 속성은 socket.connect(options)에서 패밀리 자동 선택 알고리즘이 활성화된 경우에만 존재하며, 시도된 주소의 배열입니다.

각 주소는 $IP:$PORT 형식의 문자열입니다. 연결이 성공하면 마지막 주소가 소켓이 현재 연결된 주소입니다.

socket.bufferSize

추가된 버전: v0.3.8

지원 중단된 버전: v14.6.0

[안정성: 0 - 지원 중단됨]

안정성: 0 안정성: 0 - 지원 중단됨: 대신 writable.writableLength를 사용하세요.

이 속성은 쓰기를 위해 버퍼링된 문자 수를 보여줍니다. 버퍼에는 인코딩 후 길이가 아직 알려지지 않은 문자열이 포함될 수 있습니다. 따라서 이 숫자는 버퍼의 바이트 수에 대한 근사치일 뿐입니다.

net.Socketsocket.write()가 항상 작동한다는 속성을 가지고 있습니다. 이는 사용자가 빠르게 시작하고 실행할 수 있도록 돕기 위한 것입니다. 컴퓨터가 소켓에 쓰여지는 데이터의 양을 항상 따라갈 수 있는 것은 아닙니다. 네트워크 연결이 단순히 너무 느릴 수도 있습니다. Node.js는 소켓에 쓰여진 데이터를 내부적으로 큐에 넣고 가능할 때 네트워크를 통해 보냅니다.

이 내부 버퍼링의 결과로 메모리가 늘어날 수 있습니다. bufferSize가 크거나 증가하는 사용자는 socket.pause()socket.resume()를 사용하여 프로그램에서 데이터 흐름을 "조정"해야 합니다.

socket.bytesRead

추가된 버전: v0.5.3

수신된 바이트 수입니다.

socket.bytesWritten

추가된 버전: v0.5.3

전송된 바이트 수입니다.

socket.connect()

주어진 소켓에서 연결을 시작합니다.

가능한 서명:

이 함수는 비동기적입니다. 연결이 설정되면 'connect' 이벤트가 발생합니다. 연결에 문제가 있는 경우, 'connect' 이벤트 대신 오류가 'error' 리스너에 전달된 'error' 이벤트가 발생합니다. 마지막 매개변수 connectListener가 제공된 경우, 'connect' 이벤트에 대한 리스너로 한 번 추가됩니다.

이 함수는 'close'가 발생한 후 소켓을 다시 연결하는 데만 사용해야 하며, 그렇지 않으면 정의되지 않은 동작으로 이어질 수 있습니다.

socket.connect(options[, connectListener])

[기록]

버전변경 사항
v19.4.0autoSelectFamily 옵션의 기본값을 런타임 시 setDefaultAutoSelectFamily를 사용하거나 명령줄 옵션 --enable-network-family-autoselection을 통해 변경할 수 있습니다.
v20.0.0, v18.18.0autoSelectFamily 옵션의 기본값은 이제 true입니다. --enable-network-family-autoselection CLI 플래그의 이름이 --network-family-autoselection으로 변경되었습니다. 이전 이름은 이제 별칭이지만 권장하지 않습니다.
v19.3.0, v18.13.0autoSelectFamily 옵션이 추가되었습니다.
v17.7.0, v16.15.0noDelay, keepAlive, keepAliveInitialDelay 옵션이 이제 지원됩니다.
v6.0.0hints 옵션은 이제 모든 경우에 기본값이 0입니다. 이전에는 family 옵션이 없는 경우 `dns.ADDRCONFIG
v5.11.0hints 옵션이 이제 지원됩니다.
v0.1.90추가된 버전: v0.1.90

주어진 소켓에서 연결을 시작합니다. 일반적으로 이 메서드는 필요하지 않으며, 소켓은 net.createConnection()으로 생성 및 열어야 합니다. 사용자 정의 소켓을 구현할 때만 사용하세요.

TCP 연결의 경우 사용 가능한 options는 다음과 같습니다.

  • autoSelectFamily <boolean>: true로 설정하면 RFC 8305의 섹션 5를 느슨하게 구현하는 패밀리 자동 감지 알고리즘이 활성화됩니다. 조회에 전달된 all 옵션은 true로 설정되고, 소켓은 연결이 설정될 때까지 얻은 모든 IPv6 및 IPv4 주소에 순차적으로 연결을 시도합니다. 첫 번째로 반환된 AAAA 주소가 먼저 시도되고, 그 다음으로 첫 번째로 반환된 A 주소, 그 다음으로 두 번째로 반환된 AAAA 주소 등이 시도됩니다. 각 연결 시도(마지막 시도 제외)에는 autoSelectFamilyAttemptTimeout 옵션으로 지정된 시간이 주어지며, 이 시간 내에 연결이 완료되지 않으면 다음 주소를 시도합니다. family 옵션이 0이 아니거나 localAddress가 설정된 경우 무시됩니다. 최소한 하나의 연결이 성공하면 연결 오류가 발생하지 않습니다. 모든 연결 시도가 실패하면 실패한 모든 시도가 포함된 단일 AggregateError가 발생합니다. 기본값: net.getDefaultAutoSelectFamily().
  • autoSelectFamilyAttemptTimeout <number>: autoSelectFamily 옵션을 사용할 때 연결 시도가 완료될 때까지 기다리는 시간(밀리초)입니다. 양의 정수가 10보다 작으면 10이 대신 사용됩니다. 기본값: net.getDefaultAutoSelectFamilyAttemptTimeout().
  • family <number>: IP 스택 버전입니다. 4, 6 또는 0이어야 합니다. 값 0은 IPv4 및 IPv6 주소가 모두 허용됨을 나타냅니다. 기본값: 0.
  • hints <number> 선택적 dns.lookup() 힌트.
  • host <string> 소켓이 연결해야 하는 호스트입니다. 기본값: 'localhost'.
  • keepAlive <boolean> true로 설정하면 연결이 설정된 직후 socket.setKeepAlive()에서 수행하는 것과 유사하게 소켓에서 keep-alive 기능이 활성화됩니다. 기본값: false.
  • keepAliveInitialDelay <number> 양수로 설정하면 유휴 소켓에서 첫 번째 keepalive 프로브가 전송되기 전의 초기 지연 시간을 설정합니다. 기본값: 0.
  • localAddress <string> 소켓이 연결해야 하는 로컬 주소입니다.
  • localPort <number> 소켓이 연결해야 하는 로컬 포트입니다.
  • lookup <함수> 사용자 정의 조회 함수입니다. 기본값: dns.lookup().
  • noDelay <boolean> true로 설정하면 소켓이 설정된 직후 Nagle 알고리즘 사용이 비활성화됩니다. 기본값: false.
  • port <number> 필수. 소켓이 연결해야 하는 포트입니다.
  • blockList <net.BlockList> blockList는 특정 IP 주소, IP 범위 또는 IP 서브넷에 대한 아웃바운드 액세스를 비활성화하는 데 사용할 수 있습니다.

IPC 연결의 경우 사용 가능한 options는 다음과 같습니다.

socket.connect(path[, connectListener])

지정된 소켓에서 IPC 연결을 시작합니다.

options{ path: path }가 전달되어 호출되는 socket.connect(options[, connectListener])의 별칭입니다.

socket.connect(port[, host][, connectListener])

추가된 버전: v0.1.90

  • port <number> 클라이언트가 연결해야 하는 포트입니다.
  • host <string> 클라이언트가 연결해야 하는 호스트입니다.
  • connectListener <Function> socket.connect() 메서드의 공통 매개변수입니다. 'connect' 이벤트에 대한 리스너로 한 번 추가됩니다.
  • 반환 값: <net.Socket> 소켓 자체입니다.

지정된 소켓에서 TCP 연결을 시작합니다.

options{port: port, host: host}가 전달되어 호출되는 socket.connect(options[, connectListener])의 별칭입니다.

socket.connecting

추가된 버전: v6.1.0

true이면, socket.connect(options[, connectListener])가 호출되었지만 아직 완료되지 않은 상태입니다. 소켓이 연결될 때까지 true로 유지되며, 연결되면 false로 설정되고 'connect' 이벤트가 발생합니다. socket.connect(options[, connectListener]) 콜백은 'connect' 이벤트에 대한 리스너입니다.

socket.destroy([error])

추가된 버전: v0.1.90

이 소켓에서 더 이상 I/O 활동이 발생하지 않도록 합니다. 스트림을 파괴하고 연결을 닫습니다.

자세한 내용은 writable.destroy()를 참조하십시오.

socket.destroyed

  • <boolean> 연결이 파괴되었는지 여부를 나타냅니다. 연결이 파괴되면 더 이상 해당 연결을 사용하여 데이터를 전송할 수 없습니다.

자세한 내용은 writable.destroyed를 참조하십시오.

socket.destroySoon()

추가된 버전: v0.3.4

모든 데이터가 쓰여진 후 소켓을 파괴합니다. 'finish' 이벤트가 이미 발생한 경우 소켓은 즉시 파괴됩니다. 소켓이 여전히 쓰기 가능한 상태인 경우 암시적으로 socket.end()를 호출합니다.

socket.end([data[, encoding]][, callback])

추가된 버전: v0.1.90

소켓을 절반 닫습니다. 즉, FIN 패킷을 보냅니다. 서버가 여전히 일부 데이터를 보낼 수 있습니다.

자세한 내용은 writable.end()를 참조하십시오.

socket.localAddress

추가된 버전: v0.9.6

원격 클라이언트가 연결하는 로컬 IP 주소의 문자열 표현입니다. 예를 들어, '0.0.0.0'에서 수신 대기하는 서버에서 클라이언트가 '192.168.1.1'에 연결하는 경우 socket.localAddress의 값은 '192.168.1.1'이 됩니다.

socket.localPort

추가된 버전: v0.9.6

로컬 포트의 숫자 표현입니다. 예를 들어 80 또는 21입니다.

socket.localFamily

추가된 버전: v18.8.0, v16.18.0

로컬 IP 패밀리의 문자열 표현입니다. 'IPv4' 또는 'IPv6'.

socket.pause()

데이터 읽기를 일시 중지합니다. 즉, 'data' 이벤트가 발생하지 않습니다. 업로드를 조절하는 데 유용합니다.

socket.pending

추가된 버전: v11.2.0, v10.16.0

.connect()가 아직 호출되지 않았거나 아직 연결 중이기 때문에 소켓이 아직 연결되지 않은 경우 true입니다( socket.connecting 참조).

socket.ref()

추가된 버전: v0.9.1

unref()의 반대입니다. 이전에 unref된 소켓에서 ref()를 호출하면 유일한 소켓이 남은 경우에도 프로그램이 종료되지 않습니다(기본 동작). 소켓이 ref된 경우 ref를 다시 호출해도 아무런 효과가 없습니다.

socket.remoteAddress

추가된 버전: v0.5.10

원격 IP 주소의 문자열 표현입니다. 예를 들어 '74.125.127.100' 또는 '2001:4860:a005::68'입니다. 소켓이 파괴된 경우(예: 클라이언트가 연결을 끊은 경우) 값은 undefined일 수 있습니다.

socket.remoteFamily

추가된 버전: v0.11.14

원격 IP 패밀리의 문자열 표현입니다. 'IPv4' 또는 'IPv6'입니다. 소켓이 파괴된 경우(예: 클라이언트가 연결을 끊은 경우) 값은 undefined일 수 있습니다.

socket.remotePort

추가된 버전: v0.5.10

원격 포트의 숫자 표현입니다. 예를 들어, 80 또는 21입니다. 소켓이 파괴된 경우(예: 클라이언트 연결이 끊긴 경우) 값은 undefined일 수 있습니다.

socket.resetAndDestroy()

추가된 버전: v18.3.0, v16.17.0

RST 패킷을 전송하고 스트림을 파괴하여 TCP 연결을 닫습니다. 이 TCP 소켓이 연결 상태인 경우, 연결되는 즉시 RST 패킷을 전송하고 해당 TCP 소켓을 파괴합니다. 그렇지 않으면 ERR_SOCKET_CLOSED 오류와 함께 socket.destroy를 호출합니다. 이것이 TCP 소켓이 아닌 경우(예: 파이프) 이 메서드를 호출하면 즉시 ERR_INVALID_HANDLE_TYPE 오류가 발생합니다.

socket.resume()

socket.pause() 호출 후 읽기를 재개합니다.

socket.setEncoding([encoding])

추가된 버전: v0.1.90

소켓의 인코딩을 Readable 스트림으로 설정합니다. 자세한 내용은 readable.setEncoding()을 참조하세요.

socket.setKeepAlive([enable][, initialDelay])

[기록]

버전변경 사항
v13.12.0, v12.17.0TCP_KEEPCNTTCP_KEEPINTVL 소켓 옵션에 대한 새로운 기본값이 추가되었습니다.
v0.1.92추가된 버전: v0.1.92

활성 유지 기능을 활성화/비활성화하고 선택적으로 유휴 소켓에서 첫 번째 활성 유지 프로브가 전송되기 전의 초기 지연 시간을 설정합니다.

initialDelay(밀리초)를 설정하여 마지막으로 수신된 데이터 패킷과 첫 번째 활성 유지 프로브 사이의 지연 시간을 설정합니다. initialDelay0을 설정하면 기본값(또는 이전) 설정에서 값이 변경되지 않습니다.

활성 유지 기능을 활성화하면 다음 소켓 옵션이 설정됩니다.

  • SO_KEEPALIVE=1
  • TCP_KEEPIDLE=initialDelay
  • TCP_KEEPCNT=10
  • TCP_KEEPINTVL=1

socket.setNoDelay([noDelay])

추가된 버전: v0.1.90

Nagle 알고리즘 사용을 활성화/비활성화합니다.

TCP 연결이 생성되면 Nagle 알고리즘이 활성화됩니다.

Nagle 알고리즘은 네트워크를 통해 전송되기 전에 데이터를 지연시킵니다. 이를 통해 대기 시간을 희생하여 처리량을 최적화하려고 시도합니다.

noDelaytrue를 전달하거나 인수를 전달하지 않으면 소켓에 대해 Nagle 알고리즘이 비활성화됩니다. noDelayfalse를 전달하면 Nagle 알고리즘이 활성화됩니다.

socket.setTimeout(timeout[, callback])

[기록]

버전변경 사항
v18.0.0callback 인수에 유효하지 않은 콜백을 전달하면 이제 ERR_INVALID_CALLBACK 대신 ERR_INVALID_ARG_TYPE 오류가 발생합니다.
v0.1.90추가된 버전: v0.1.90

소켓에서 timeout 밀리초 동안 활동이 없으면 소켓이 시간 초과되도록 설정합니다. 기본적으로 net.Socket에는 시간 초과가 없습니다.

유휴 시간 초과가 트리거되면 소켓은 'timeout' 이벤트를 수신하지만 연결이 끊어지지는 않습니다. 사용자는 연결을 종료하기 위해 socket.end() 또는 socket.destroy()를 수동으로 호출해야 합니다.

js
socket.setTimeout(3000)
socket.on('timeout', () => {
  console.log('소켓 시간 초과')
  socket.end()
})

timeout이 0이면 기존 유휴 시간 초과가 비활성화됩니다.

선택적 callback 매개변수는 'timeout' 이벤트에 대한 일회성 리스너로 추가됩니다.

socket.timeout

추가된 버전: v10.7.0

socket.setTimeout()에 의해 설정된 소켓 타임아웃 (밀리초 단위)입니다. 타임아웃이 설정되지 않은 경우 undefined입니다.

socket.unref()

추가된 버전: v0.9.1

소켓에서 unref()를 호출하면 이벤트 시스템에서 이 소켓이 유일하게 활성화된 소켓인 경우 프로그램이 종료될 수 있습니다. 소켓이 이미 unref된 경우 unref()를 다시 호출해도 아무런 효과가 없습니다.

socket.write(data[, encoding][, callback])

추가된 버전: v0.1.90

소켓에 데이터를 보냅니다. 두 번째 매개변수는 문자열의 경우 인코딩을 지정합니다. 기본값은 UTF8 인코딩입니다.

전체 데이터가 커널 버퍼로 성공적으로 플러시되면 true를 반환합니다. 데이터의 일부 또는 전부가 사용자 메모리에 큐에 저장된 경우 false를 반환합니다. 버퍼가 다시 비면 'drain' 이벤트가 발생합니다.

선택적 callback 매개변수는 데이터가 최종적으로 기록되면 실행되며, 즉시 실행되지 않을 수 있습니다.

자세한 내용은 Writable 스트림 write() 메서드를 참조하십시오.

socket.readyState

추가된 버전: v0.5.0

이 속성은 연결 상태를 문자열로 나타냅니다.

  • 스트림이 연결 중인 경우 socket.readyStateopening입니다.
  • 스트림을 읽고 쓸 수 있는 경우 open입니다.
  • 스트림을 읽을 수 있지만 쓸 수 없는 경우 readOnly입니다.
  • 스트림을 읽을 수 없고 쓸 수 있는 경우 writeOnly입니다.

net.connect()

net.createConnection()의 별칭입니다.

가능한 서명:

net.connect(options[, connectListener])

추가된 버전: v0.7.0

net.createConnection(options[, connectListener])의 별칭입니다.

net.connect(path[, connectListener])

추가된 버전: v0.1.90

net.createConnection(path[, connectListener])의 별칭입니다.

net.connect(port[, host][, connectListener])

추가된 버전: v0.1.90

net.createConnection(port[, host][, connectListener])의 별칭입니다.

net.createConnection()

새로운 net.Socket을 생성하고 즉시 socket.connect()로 연결을 시작한 다음 연결을 시작하는 net.Socket을 반환하는 팩토리 함수입니다.

연결이 설정되면 반환된 소켓에서 'connect' 이벤트가 발생합니다. 마지막 매개변수 connectListener가 제공된 경우, 한 번 'connect' 이벤트에 대한 리스너로 추가됩니다.

가능한 시그니처:

net.connect() 함수는 이 함수의 별칭입니다.

net.createConnection(options[, connectListener])

추가된 버전: v0.1.90

사용 가능한 옵션은 new net.Socket([options])socket.connect(options[, connectListener])를 참조하십시오.

추가 옵션:

다음은 net.createServer() 섹션에 설명된 에코 서버의 클라이언트 예입니다.

js
import net from 'node:net'
const client = net.createConnection({ port: 8124 }, () => {
  // 'connect' 리스너.
  console.log('서버에 연결됨!')
  client.write('world!\r\n')
})
client.on('data', data => {
  console.log(data.toString())
  client.end()
})
client.on('end', () => {
  console.log('서버에서 연결이 끊김')
})
js
const net = require('node:net')
const client = net.createConnection({ port: 8124 }, () => {
  // 'connect' 리스너.
  console.log('서버에 연결됨!')
  client.write('world!\r\n')
})
client.on('data', data => {
  console.log(data.toString())
  client.end()
})
client.on('end', () => {
  console.log('서버에서 연결이 끊김')
})

소켓 /tmp/echo.sock에 연결하려면:

js
const client = net.createConnection({ path: '/tmp/echo.sock' })

다음은 portonread 옵션을 사용하는 클라이언트의 예입니다. 이 경우 onread 옵션은 new net.Socket([options])를 호출하는 데만 사용되고 port 옵션은 socket.connect(options[, connectListener])를 호출하는 데 사용됩니다.

js
import net from 'node:net'
import { Buffer } from 'node:buffer'
net.createConnection({
  port: 8124,
  onread: {
    // 소켓에서 읽을 때마다 4KiB 버퍼를 재사용합니다.
    buffer: Buffer.alloc(4 * 1024),
    callback: function (nread, buf) {
      // 수신된 데이터는 `buf`에서 0부터 `nread`까지 사용할 수 있습니다.
      console.log(buf.toString('utf8', 0, nread))
    },
  },
})
js
const net = require('node:net')
net.createConnection({
  port: 8124,
  onread: {
    // 소켓에서 읽을 때마다 4KiB 버퍼를 재사용합니다.
    buffer: Buffer.alloc(4 * 1024),
    callback: function (nread, buf) {
      // 수신된 데이터는 `buf`에서 0부터 `nread`까지 사용할 수 있습니다.
      console.log(buf.toString('utf8', 0, nread))
    },
  },
})

net.createConnection(path[, connectListener])

추가된 버전: v0.1.90

IPC 연결을 시작합니다.

이 함수는 모든 옵션이 기본값으로 설정된 새로운 net.Socket을 생성하고, 즉시 socket.connect(path[, connectListener])로 연결을 시작한 다음, 연결을 시작하는 net.Socket을 반환합니다.

net.createConnection(port[, host][, connectListener])

추가된 버전: v0.1.90

TCP 연결을 시작합니다.

이 함수는 모든 옵션이 기본값으로 설정된 새로운 net.Socket을 생성하고, 즉시 socket.connect(port[, host][, connectListener])로 연결을 시작한 다음, 연결을 시작하는 net.Socket을 반환합니다.

net.createServer([options][, connectionListener])

[기록]

버전변경 사항
v20.1.0, v18.17.0highWaterMark 옵션이 이제 지원됩니다.
v17.7.0, v16.15.0noDelay, keepAlive, keepAliveInitialDelay 옵션이 이제 지원됩니다.
v0.5.0v0.5.0에 추가됨
  • options <Object>

    • allowHalfOpen <boolean> false로 설정하면, 소켓의 읽기 가능한 측면이 끝나면 쓰기 가능한 측면이 자동으로 종료됩니다. 기본값: false.
    • highWaterMark <number> 선택적으로 모든 net.SocketreadableHighWaterMarkwritableHighWaterMark를 재정의합니다. 기본값: stream.getDefaultHighWaterMark()를 참조하십시오.
    • keepAlive <boolean> true로 설정하면 새 들어오는 연결을 받은 직후에 소켓에서 keep-alive 기능이 활성화됩니다. socket.setKeepAlive()와 유사하게 수행됩니다. 기본값: false.
    • keepAliveInitialDelay <number> 양수로 설정하면 유휴 소켓에서 첫 번째 keepalive 프로브를 보내기 전의 초기 지연 시간을 설정합니다. 기본값: 0.
    • noDelay <boolean> true로 설정하면 새 들어오는 연결을 받은 직후에 Nagle 알고리즘 사용을 비활성화합니다. 기본값: false.
    • pauseOnConnect <boolean> 들어오는 연결에서 소켓을 일시 중지해야 하는지 여부를 나타냅니다. 기본값: false.
    • blockList <net.BlockList> blockList는 특정 IP 주소, IP 범위 또는 IP 서브넷에 대한 인바운드 액세스를 비활성화하는 데 사용할 수 있습니다. 서버가 리버스 프록시, NAT 등에 있는 경우 차단 목록에 대해 확인된 주소가 프록시의 주소 또는 NAT에서 지정한 주소이기 때문에 작동하지 않습니다.
  • connectionListener <Function> 'connection' 이벤트에 대한 리스너로 자동으로 설정됩니다.

  • 반환값: <net.Server>

새로운 TCP 또는 IPC 서버를 만듭니다.

allowHalfOpentrue로 설정되면 소켓의 다른 쪽 끝에서 전송 종료를 알릴 때 서버는 socket.end()가 명시적으로 호출될 때만 전송 종료를 다시 보냅니다. 예를 들어 TCP 컨텍스트에서 FIN 패킷을 받으면 socket.end()가 명시적으로 호출될 때만 FIN 패킷을 다시 보냅니다. 그때까지 연결은 반쯤 닫힌 상태(읽을 수 없지만 여전히 쓸 수 있음)입니다. 자세한 내용은 'end' 이벤트 및 RFC 1122 (섹션 4.2.2.13)을 참조하십시오.

pauseOnConnecttrue로 설정되면 각 들어오는 연결과 연결된 소켓이 일시 중지되고 해당 핸들에서 데이터가 읽히지 않습니다. 이렇게 하면 원래 프로세스에서 데이터를 읽지 않고 프로세스 간에 연결을 전달할 수 있습니다. 일시 중지된 소켓에서 데이터 읽기를 시작하려면 socket.resume()을 호출합니다.

서버는 listen()에 따라 TCP 서버 또는 IPC 서버가 될 수 있습니다.

다음은 포트 8124에서 연결을 수신하는 TCP 에코 서버의 예입니다.

js
import net from 'node:net'
const server = net.createServer(c => {
  // 'connection' 리스너.
  console.log('클라이언트 연결됨')
  c.on('end', () => {
    console.log('클라이언트 연결 끊김')
  })
  c.write('hello\r\n')
  c.pipe(c)
})
server.on('error', err => {
  throw err
})
server.listen(8124, () => {
  console.log('서버 바인딩됨')
})
js
const net = require('node:net')
const server = net.createServer(c => {
  // 'connection' 리스너.
  console.log('클라이언트 연결됨')
  c.on('end', () => {
    console.log('클라이언트 연결 끊김')
  })
  c.write('hello\r\n')
  c.pipe(c)
})
server.on('error', err => {
  throw err
})
server.listen(8124, () => {
  console.log('서버 바인딩됨')
})

telnet을 사용하여 테스트합니다.

bash
telnet localhost 8124

소켓 /tmp/echo.sock에서 수신하려면 다음과 같이 합니다.

js
server.listen('/tmp/echo.sock', () => {
  console.log('서버 바인딩됨')
})

nc를 사용하여 Unix 도메인 소켓 서버에 연결합니다.

bash
nc -U /tmp/echo.sock

net.getDefaultAutoSelectFamily()

추가된 버전: v19.4.0

socket.connect(options)autoSelectFamily 옵션의 현재 기본값을 가져옵니다. 명령줄 옵션 --no-network-family-autoselection이 제공되지 않는 한 초기 기본값은 true입니다.

  • 반환값: <boolean> autoSelectFamily 옵션의 현재 기본값입니다.

net.setDefaultAutoSelectFamily(value)

추가된 버전: v19.4.0

socket.connect(options)autoSelectFamily 옵션의 기본값을 설정합니다.

  • value <boolean> 새로운 기본값입니다. 명령줄 옵션 --no-network-family-autoselection이 제공되지 않는 한 초기 기본값은 true입니다.

net.getDefaultAutoSelectFamilyAttemptTimeout()

추가된 버전: v19.8.0, v18.18.0

socket.connect(options)autoSelectFamilyAttemptTimeout 옵션의 현재 기본값을 가져옵니다. 초기 기본값은 250이거나 명령줄 옵션 --network-family-autoselection-attempt-timeout을 통해 지정된 값입니다.

  • 반환값: <number> autoSelectFamilyAttemptTimeout 옵션의 현재 기본값입니다.

net.setDefaultAutoSelectFamilyAttemptTimeout(value)

추가된 버전: v19.8.0, v18.18.0

socket.connect(options)autoSelectFamilyAttemptTimeout 옵션의 기본값을 설정합니다.

  • value <number> 새로운 기본값이며, 양수여야 합니다. 숫자가 10보다 작으면 대신 10이 사용됩니다. 초기 기본값은 250이거나 명령줄 옵션 --network-family-autoselection-attempt-timeout을 통해 지정된 값입니다.

net.isIP(input)

추가된 버전: v0.3.0

input이 IPv6 주소이면 6을 반환합니다. input이 선행 0이 없는 점십진 표기법의 IPv4 주소이면 4를 반환합니다. 그렇지 않으면 0을 반환합니다.

js
net.isIP('::1') // 6 반환
net.isIP('127.0.0.1') // 4 반환
net.isIP('127.000.000.001') // 0 반환
net.isIP('127.0.0.1/24') // 0 반환
net.isIP('fhqwhgads') // 0 반환

net.isIPv4(input)

추가된 버전: v0.3.0

input이 선행 0이 없는 점십진 표기법의 IPv4 주소이면 true를 반환합니다. 그렇지 않으면 false를 반환합니다.

js
net.isIPv4('127.0.0.1') // true 반환
net.isIPv4('127.000.000.001') // false 반환
net.isIPv4('127.0.0.1/24') // false 반환
net.isIPv4('fhqwhgads') // false 반환

net.isIPv6(input)

추가된 버전: v0.3.0

input이 IPv6 주소이면 true를 반환합니다. 그렇지 않으면 false를 반환합니다.

js
net.isIPv6('::1') // true 반환
net.isIPv6('fhqwhgads') // false 반환