Net
[Estável: 2 - Estável]
Estável: 2 Estabilidade: 2 - Estável
Código Fonte: lib/net.js
O módulo node:net
fornece uma API de rede assíncrona para criar servidores TCP ou IPC baseados em fluxo (net.createServer()
) e clientes (net.createConnection()
).
Ele pode ser acessado usando:
import net from 'node:net';
const net = require('node:net');
Suporte a IPC
[Histórico]
Versão | Mudanças |
---|---|
v20.8.0 | Suporte para vincular ao caminho do socket de domínio Unix abstrato como \0abstract . Podemos vincular '\0' para Node.js \< v20.4.0 . |
O módulo node:net
oferece suporte a IPC com pipes nomeados no Windows e sockets de domínio Unix em outros sistemas operacionais.
Identificando caminhos para conexões IPC
net.connect()
, net.createConnection()
, server.listen()
e socket.connect()
usam um parâmetro path
para identificar endpoints IPC.
No Unix, o domínio local também é conhecido como domínio Unix. O caminho é um nome de caminho do sistema de arquivos. Ele lançará um erro quando o comprimento do nome do caminho for maior que o comprimento de sizeof(sockaddr_un.sun_path)
. Os valores típicos são 107 bytes no Linux e 103 bytes no macOS. Se uma abstração de API Node.js criar o socket de domínio Unix, ela também desvinculará o socket de domínio Unix. Por exemplo, net.createServer()
pode criar um socket de domínio Unix e server.close()
o desvinculará. Mas se um usuário criar o socket de domínio Unix fora dessas abstrações, o usuário precisará removê-lo. O mesmo se aplica quando uma API Node.js cria um socket de domínio Unix, mas o programa trava. Resumindo, um socket de domínio Unix estará visível no sistema de arquivos e persistirá até ser desvinculado. No Linux, você pode usar o socket abstrato Unix adicionando \0
ao início do caminho, como \0abstract
. O caminho para o socket abstrato Unix não está visível no sistema de arquivos e desaparecerá automaticamente quando todas as referências abertas ao socket forem fechadas.
No Windows, o domínio local é implementado usando um pipe nomeado. O caminho deve se referir a uma entrada em \\?\pipe\
ou \\.\pipe\
. Quaisquer caracteres são permitidos, mas o último pode fazer algum processamento de nomes de pipe, como resolver sequências ..
. Apesar de como possa parecer, o namespace do pipe é plano. Os pipes não persistirão. Eles são removidos quando a última referência a eles é fechada. Ao contrário dos sockets de domínio Unix, o Windows fechará e removerá o pipe quando o processo proprietário for encerrado.
O escape de string JavaScript requer que os caminhos sejam especificados com escape de barra invertida extra, como:
net.createServer().listen(
path.join('\\\\?\\pipe', process.cwd(), 'myctl'));
Classe: net.BlockList
Adicionado em: v15.0.0, v14.18.0
O objeto BlockList
pode ser usado com algumas APIs de rede para especificar regras para desabilitar o acesso de entrada ou saída a endereços IP, intervalos de IP ou sub-redes IP específicos.
blockList.addAddress(address[, type])
Adicionado em: v15.0.0, v14.18.0
address
<string> | <net.SocketAddress> Um endereço IPv4 ou IPv6.type
<string>'ipv4'
ou'ipv6'
. Padrão:'ipv4'
.
Adiciona uma regra para bloquear o endereço IP fornecido.
blockList.addRange(start, end[, type])
Adicionado em: v15.0.0, v14.18.0
start
<string> | <net.SocketAddress> O endereço IPv4 ou IPv6 inicial no intervalo.end
<string> | <net.SocketAddress> O endereço IPv4 ou IPv6 final no intervalo.type
<string>'ipv4'
ou'ipv6'
. Padrão:'ipv4'
.
Adiciona uma regra para bloquear um intervalo de endereços IP de start
(inclusivo) a end
(inclusivo).
blockList.addSubnet(net, prefix[, type])
Adicionado em: v15.0.0, v14.18.0
net
<string> | <net.SocketAddress> O endereço de rede IPv4 ou IPv6.prefix
<number> O número de bits de prefixo CIDR. Para IPv4, este deve ser um valor entre0
e32
. Para IPv6, este deve estar entre0
e128
.type
<string>'ipv4'
ou'ipv6'
. Padrão:'ipv4'
.
Adiciona uma regra para bloquear um intervalo de endereços IP especificado como uma máscara de sub-rede.
blockList.check(address[, type])
Adicionado em: v15.0.0, v14.18.0
address
<string> | <net.SocketAddress> O endereço IP a ser verificadotype
<string> Ou'ipv4'
ou'ipv6'
. Padrão:'ipv4'
.- Retorna: <boolean>
Retorna true
se o endereço IP fornecido corresponder a qualquer uma das regras adicionadas à BlockList
.
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')); // Imprime: true
console.log(blockList.check('10.0.0.3')); // Imprime: true
console.log(blockList.check('222.111.111.222')); // Imprime: false
// A notação IPv6 para endereços IPv4 funciona:
console.log(blockList.check('::ffff:7b7b:7b7b', 'ipv6')); // Imprime: true
console.log(blockList.check('::ffff:123.123.123.123', 'ipv6')); // Imprime: true
blockList.rules
Adicionado em: v15.0.0, v14.18.0
- Tipo: <string[]>
A lista de regras adicionadas à blocklist.
BlockList.isBlockList(value)
Adicionado em: v23.4.0
value
<any> Qualquer valor JS- Retorna
true
se ovalue
for umnet.BlockList
.
Classe: net.SocketAddress
Adicionado em: v15.14.0, v14.18.0
new net.SocketAddress([options])
Adicionado em: v15.14.0, v14.18.0
options
<Object>
socketaddress.address
Adicionado em: v15.14.0, v14.18.0
- Tipo <string>
socketaddress.family
Adicionado em: v15.14.0, v14.18.0
- Tipo <string> Ou
'ipv4'
ou'ipv6'
.
socketaddress.flowlabel
Adicionado em: v15.14.0, v14.18.0
- Tipo <number>
socketaddress.port
Adicionado em: v15.14.0, v14.18.0
- Tipo <number>
SocketAddress.parse(input)
Adicionado em: v23.4.0
input
<string> Uma string de entrada contendo um endereço IP e uma porta opcional, por exemplo,123.1.2.3:1234
ou[1::1]:1234
.- Retorna: <net.SocketAddress> Retorna um
SocketAddress
se a análise for bem-sucedida. Caso contrário, retornaundefined
.
Classe: net.Server
Adicionado em: v0.1.90
- Estende: <EventEmitter>
Essa classe é usada para criar um servidor TCP ou IPC.
new net.Server([options][, connectionListener])
options
<Object> Vejanet.createServer([options][, connectionListener])
.connectionListener
<Function> Definido automaticamente como um listener para o evento'connection'
.- Retorna: <net.Server>
net.Server
é um EventEmitter
com os seguintes eventos:
Evento: 'close'
Adicionado em: v0.5.0
Emitido quando o servidor fecha. Se existirem conexões, esse evento não é emitido até que todas as conexões sejam encerradas.
Evento: 'connection'
Adicionado em: v0.1.90
- <net.Socket> O objeto de conexão
Emitido quando uma nova conexão é feita. socket
é uma instância de net.Socket
.
Evento: 'error'
Adicionado em: v0.1.90
Emitido quando ocorre um erro. Ao contrário de net.Socket
, o evento 'close'
não será emitido diretamente após este evento, a menos que server.close()
seja chamado manualmente. Veja o exemplo na discussão de server.listen()
.
Evento: 'listening'
Adicionado em: v0.1.90
Emitido quando o servidor foi vinculado após chamar server.listen()
.
Evento: 'drop'
Adicionado em: v18.6.0, v16.17.0
Quando o número de conexões atinge o limite de server.maxConnections
, o servidor descartará novas conexões e emitirá o evento 'drop'
em vez disso. Se for um servidor TCP, o argumento é o seguinte, caso contrário, o argumento é undefined
.
data
<Object> O argumento passado para o listener do evento.
server.address()
[Histórico]
Versão | Mudanças |
---|---|
v18.4.0 | A propriedade family agora retorna uma string em vez de um número. |
v18.0.0 | A propriedade family agora retorna um número em vez de uma string. |
v0.1.90 | Adicionado em: v0.1.90 |
Retorna o address
vinculado, o nome da family
do endereço e a port
do servidor, conforme relatado pelo sistema operacional, se estiver ouvindo em um socket IP (útil para descobrir qual porta foi atribuída ao obter um endereço atribuído pelo SO): { port: 12346, family: 'IPv4', address: '127.0.0.1' }
.
Para um servidor que está ouvindo em um pipe ou socket de domínio Unix, o nome é retornado como uma string.
const server = net.createServer((socket) => {
socket.end('adeus\n');
}).on('error', (err) => {
// Lidar com erros aqui.
throw err;
});
// Obtenha uma porta não utilizada arbitrária.
server.listen(() => {
console.log('servidor aberto em', server.address());
});
server.address()
retorna null
antes que o evento 'listening'
seja emitido ou após chamar server.close()
.
server.close([callback])
Adicionado em: v0.1.90
callback
<Função> Chamado quando o servidor é fechado.- Retorna: <net.Server>
Impede que o servidor aceite novas conexões e mantém as conexões existentes. Esta função é assíncrona, o servidor é finalmente fechado quando todas as conexões são encerradas e o servidor emite um evento 'close'
. O callback
opcional será chamado quando o evento 'close'
ocorrer. Ao contrário desse evento, ele será chamado com um Error
como seu único argumento se o servidor não estiver aberto quando for fechado.
server[Symbol.asyncDispose]()
Adicionado em: v20.5.0, v18.18.0
[Estável: 1 - Experimental]
Estável: 1 Estabilidade: 1 - Experimental
Chama server.close()
e retorna uma promise que é cumprida quando o servidor é fechado.
server.getConnections(callback)
Adicionado em: v0.9.7
callback
<Function>- Retorna: <net.Server>
Obtém assincronamente o número de conexões simultâneas no servidor. Funciona quando os sockets foram enviados para forks.
O callback deve receber dois argumentos err
e count
.
server.listen()
Inicia um servidor ouvindo conexões. Um net.Server
pode ser um servidor TCP ou IPC, dependendo do que ele ouve.
Assinaturas possíveis:
server.listen(handle[, backlog][, callback])
server.listen(options[, callback])
server.listen(path[, backlog][, callback])
para servidores IPCserver.listen([port[, host[, backlog]]][, callback])
para servidores TCP
Esta função é assíncrona. Quando o servidor começa a ouvir, o evento 'listening'
será emitido. O último parâmetro callback
será adicionado como um listener para o evento 'listening'
.
Todos os métodos listen()
podem receber um parâmetro backlog
para especificar o comprimento máximo da fila de conexões pendentes. O comprimento real será determinado pelo SO através de configurações sysctl, como tcp_max_syn_backlog
e somaxconn
no Linux. O valor padrão deste parâmetro é 511 (não 512).
Todos os net.Socket
são definidos como SO_REUSEADDR
(ver socket(7)
para detalhes).
O método server.listen()
pode ser chamado novamente se e somente se houve um erro durante a primeira chamada server.listen()
ou server.close()
foi chamado. Caso contrário, um erro ERR_SERVER_ALREADY_LISTEN
será lançado.
Um dos erros mais comuns levantados ao ouvir é EADDRINUSE
. Isso acontece quando outro servidor já está ouvindo na port
/path
/handle
solicitada. Uma maneira de lidar com isso seria tentar novamente após um certo período de tempo:
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])
Adicionado em: v0.5.10
handle
<Objeto>backlog
<number> Parâmetro comum das funçõesserver.listen()
callback
<Function>- Retorna: <net.Server>
Inicia um servidor à espera de conexões em um determinado handle
que já foi vinculado a uma porta, um socket de domínio Unix ou um pipe nomeado do Windows.
O objeto handle
pode ser um servidor, um socket (qualquer coisa com um membro _handle
subjacente) ou um objeto com um membro fd
que seja um descritor de arquivo válido.
A escuta em um descritor de arquivo não é suportada no Windows.
server.listen(options[, callback])
[Histórico]
Versão | Alterações |
---|---|
v23.1.0 | A opção reusePort é suportada. |
v15.6.0 | O suporte ao AbortSignal foi adicionado. |
v11.4.0 | A opção ipv6Only é suportada. |
v0.11.14 | Adicionado em: v0.11.14 |
options
<Objeto> Requerido. Suporta as seguintes propriedades:backlog
<number> Parâmetro comum das funçõesserver.listen()
.exclusive
<boolean> Padrão:false
host
<string>ipv6Only
<boolean> Para servidores TCP, definiripv6Only
comotrue
desativará o suporte a pilha dupla, ou seja, vincular ao host::
não fará com que0.0.0.0
seja vinculado. Padrão:false
.reusePort
<boolean> Para servidores TCP, definirreusePort
comotrue
permite que vários sockets no mesmo host se liguem à mesma porta. As conexões de entrada são distribuídas pelo sistema operacional aos sockets de escuta. Esta opção está disponível apenas em algumas plataformas, como Linux 3.9+, DragonFlyBSD 3.6+, FreeBSD 12.0+, Solaris 11.4 e AIX 7.2.5+. Padrão:false
.path
<string> Será ignorado seport
for especificado. Consulte Identificando caminhos para conexões IPC.port
<number>readableAll
<boolean> Para servidores IPC, torna o pipe legível para todos os usuários. Padrão:false
.signal
<AbortSignal> Um AbortSignal que pode ser usado para fechar um servidor de escuta.writableAll
<boolean> Para servidores IPC, torna o pipe gravável para todos os usuários. Padrão:false
.
callback
<Function> functions.Retorna: <net.Server>
Se port
for especificado, ele se comporta da mesma forma que server.listen([port[, host[, backlog]]][, callback])
. Caso contrário, se path
for especificado, ele se comporta da mesma forma que server.listen(path[, backlog][, callback])
. Se nenhum deles for especificado, um erro será lançado.
Se exclusive
for false
(padrão), os workers do cluster usarão o mesmo handle subjacente, permitindo que as tarefas de tratamento de conexão sejam compartilhadas. Quando exclusive
é true
, o handle não é compartilhado e a tentativa de compartilhamento de porta resulta em um erro. Um exemplo de escuta em uma porta exclusiva é mostrado abaixo.
server.listen({
host: 'localhost',
port: 80,
exclusive: true,
});
Quando exclusive
é true
e o handle subjacente é compartilhado, é possível que vários workers consultem um handle com diferentes backlogs. Nesse caso, o primeiro backlog
passado para o processo mestre será usado.
Iniciar um servidor IPC como root pode fazer com que o caminho do servidor fique inacessível para usuários não privilegiados. Usar readableAll
e writableAll
tornará o servidor acessível para todos os usuários.
Se a opção signal
estiver habilitada, chamar .abort()
no AbortController
correspondente é semelhante a chamar .close()
no servidor:
const controller = new AbortController();
server.listen({
host: 'localhost',
port: 80,
signal: controller.signal,
});
// Mais tarde, quando você quiser fechar o servidor.
controller.abort();
server.listen(path[, backlog][, callback])
Adicionado em: v0.1.90
path
<string> Caminho que o servidor deve escutar. Veja Identificação de caminhos para conexões IPC.backlog
<number> Parâmetro comum das funçõesserver.listen()
.callback
<Function>.- Retorna: <net.Server>
Inicia um servidor IPC que escuta por conexões no path
fornecido.
server.listen([port[, host[, backlog]]][, callback])
Adicionado em: v0.1.90
port
<number>host
<string>backlog
<number> Parâmetro comum das funçõesserver.listen()
.callback
<Function>.- Retorna: <net.Server>
Inicia um servidor TCP que escuta por conexões na port
e host
fornecidos.
Se port
for omitido ou for 0, o sistema operacional atribuirá uma porta não utilizada arbitrária, que pode ser recuperada usando server.address().port
após o evento 'listening'
ter sido emitido.
Se host
for omitido, o servidor aceitará conexões no endereço IPv6 não especificado (::
) quando o IPv6 estiver disponível, ou no endereço IPv4 não especificado (0.0.0.0
) caso contrário.
Na maioria dos sistemas operacionais, escutar o endereço IPv6 não especificado (::
) pode fazer com que o net.Server
também escute no endereço IPv4 não especificado (0.0.0.0
).
server.listening
Adicionado em: v5.7.0
- <boolean> Indica se o servidor está ou não à escuta de conexões.
server.maxConnections
[Histórico]
Versão | Alterações |
---|---|
v21.0.0 | Definir maxConnections para 0 derruba todas as conexões de entrada. Anteriormente, era interpretado como Infinity . |
v0.2.0 | Adicionado em: v0.2.0 |
Quando o número de conexões atinge o limite de server.maxConnections
:
Não é recomendado usar esta opção quando um socket é enviado para um filho com child_process.fork()
.
server.dropMaxConnection
Adicionado em: v23.1.0
Defina esta propriedade para true
para começar a fechar as conexões quando o número de conexões atingir o limite [server.maxConnections
][]. Esta configuração só é eficaz no modo de cluster.
server.ref()
Adicionado em: v0.9.1
- Retorna: <net.Server>
O oposto de unref()
, chamar ref()
num servidor previamente unref
não permitirá que o programa termine se for o único servidor restante (o comportamento padrão). Se o servidor for ref
chamar ref()
novamente não terá efeito.
server.unref()
Adicionado em: v0.9.1
- Retorna: <net.Server>
Chamar unref()
num servidor permitirá que o programa termine se este for o único servidor ativo no sistema de eventos. Se o servidor já estiver unref
chamar unref()
novamente não terá efeito.
Classe: net.Socket
Adicionado em: v0.3.4
- Estende: <stream.Duplex>
Esta classe é uma abstração de um socket TCP ou um endpoint IPC de streaming (usa named pipes no Windows e sockets de domínio Unix em outros casos). Também é um EventEmitter
.
Um net.Socket
pode ser criado pelo utilizador e usado diretamente para interagir com um servidor. Por exemplo, é retornado por net.createConnection()
, para que o utilizador possa usá-lo para comunicar com o servidor.
Também pode ser criado pelo Node.js e passado para o utilizador quando uma conexão é recebida. Por exemplo, é passado para os listeners de um evento 'connection'
emitido num net.Server
, para que o utilizador possa usá-lo para interagir com o cliente.
new net.Socket([options])
[Histórico]
Versão | Mudanças |
---|---|
v15.14.0 | Suporte para AbortSignal foi adicionado. |
v12.10.0 | Adicionada a opção onread . |
v0.3.4 | Adicionado em: v0.3.4 |
options
<Object> As opções disponíveis são:allowHalfOpen
<boolean> Se definido comofalse
, o socket encerrará automaticamente o lado gravável quando o lado legível terminar. Vejanet.createServer()
e o evento'end'
para detalhes. Padrão:false
.fd
<number> Se especificado, envolve um socket existente com o descritor de arquivo fornecido, caso contrário, um novo socket será criado.onread
<Object> Se especificado, os dados de entrada são armazenados em um únicobuffer
e passados para ocallback
fornecido quando os dados chegam ao socket. Isso fará com que a funcionalidade de streaming não forneça nenhum dado. O socket emitirá eventos como'error'
,'end'
e'close'
como de costume. Métodos comopause()
eresume()
também se comportarão como esperado.buffer
<Buffer> | <Uint8Array> | <Function> Ou um pedaço de memória reutilizável para usar para armazenar dados de entrada ou uma função que retorna tal.callback
<Function> Esta função é chamada para cada pedaço de dados de entrada. Dois argumentos são passados para ela: o número de bytes gravados nobuffer
e uma referência aobuffer
. Retornefalse
desta função parapause()
implicitamente o socket. Esta função será executada no contexto global.readable
<boolean> Permite leituras no socket quando umfd
é passado, caso contrário, é ignorado. Padrão:false
.signal
<AbortSignal> Um sinal de Abort que pode ser usado para destruir o socket.writable
<boolean> Permite gravações no socket quando umfd
é passado, caso contrário, é ignorado. Padrão:false
.
Retorna: <net.Socket>
Cria um novo objeto socket.
O socket recém-criado pode ser um socket TCP ou um ponto de extremidade IPC de streaming, dependendo do que ele connect()
para.
Evento: 'close'
Adicionado em: v0.1.90
hadError
<boolean>true
se o socket teve um erro de transmissão.
Emitido quando o socket é totalmente fechado. O argumento hadError
é um booleano que indica se o socket foi fechado devido a um erro de transmissão.
Evento: 'connect'
Adicionado em: v0.1.90
Emitido quando uma conexão de socket é estabelecida com sucesso. Veja net.createConnection()
.
Evento: 'connectionAttempt'
Adicionado em: v21.6.0, v20.12.0
ip
<string> O IP ao qual o socket está tentando se conectar.port
<number> A porta à qual o socket está tentando se conectar.family
<number> A família do IP. Pode ser6
para IPv6 ou4
para IPv4.
Emitido quando uma nova tentativa de conexão é iniciada. Isso pode ser emitido várias vezes se o algoritmo de seleção automática de família estiver ativado em socket.connect(options)
.
Evento: 'connectionAttemptFailed'
Adicionado em: v21.6.0, v20.12.0
ip
<string> O IP ao qual o socket tentou se conectar.port
<number> A porta à qual o socket tentou se conectar.family
<number> A família do IP. Pode ser6
para IPv6 ou4
para IPv4.error
<Error> O erro associado à falha.
Emitido quando uma tentativa de conexão falhou. Isso pode ser emitido várias vezes se o algoritmo de seleção automática de família estiver ativado em socket.connect(options)
.
Evento: 'connectionAttemptTimeout'
Adicionado em: v21.6.0, v20.12.0
ip
<string> O IP ao qual o socket tentou se conectar.port
<number> A porta à qual o socket tentou se conectar.family
<number> A família do IP. Pode ser6
para IPv6 ou4
para IPv4.
Emitido quando uma tentativa de conexão atinge o tempo limite. Isso só é emitido (e pode ser emitido várias vezes) se o algoritmo de seleção automática de família estiver habilitado em socket.connect(options)
.
Evento: 'data'
Adicionado em: v0.1.90
Emitido quando os dados são recebidos. O argumento data
será um Buffer
ou String
. A codificação dos dados é definida por socket.setEncoding()
.
Os dados serão perdidos se não houver um listener quando um Socket
emitir um evento 'data'
.
Evento: 'drain'
Adicionado em: v0.1.90
Emitido quando o buffer de escrita se torna vazio. Pode ser usado para limitar os uploads.
Veja também: os valores de retorno de socket.write()
.
Evento: 'end'
Adicionado em: v0.1.90
Emitido quando a outra extremidade do socket sinaliza o fim da transmissão, terminando assim o lado legível do socket.
Por padrão (allowHalfOpen
é false
), o socket enviará um pacote de fim de transmissão de volta e destruirá seu descritor de arquivo assim que tiver gravado sua fila de escrita pendente. No entanto, se allowHalfOpen
estiver definido como true
, o socket não irá automaticamente end()
seu lado gravável, permitindo que o usuário escreva quantidades arbitrárias de dados. O usuário deve chamar end()
explicitamente para fechar a conexão (ou seja, enviando um pacote FIN de volta).
Evento: 'error'
Adicionado em: v0.1.90
Emitido quando ocorre um erro. O evento 'close'
será chamado diretamente após este evento.
Evento: 'lookup'
[Histórico]
Versão | Mudanças |
---|---|
v5.10.0 | O parâmetro host agora é suportado. |
v0.11.3 | Adicionado em: v0.11.3 |
Emitido após resolver o nome do host, mas antes de conectar. Não aplicável a sockets Unix.
err
<Error> | <null> O objeto de erro. Vejadns.lookup()
.address
<string> O endereço IP.family
<number> | <null> O tipo de endereço. Vejadns.lookup()
.host
<string> O nome do host.
Evento: 'ready'
Adicionado em: v9.11.0
Emitido quando um socket está pronto para ser usado.
Acionado imediatamente após 'connect'
.
Evento: 'timeout'
Adicionado em: v0.1.90
Emitido se o socket atinge o tempo limite por inatividade. Isso serve apenas para notificar que o socket está ocioso. O usuário deve fechar manualmente a conexão.
Veja também: socket.setTimeout()
.
socket.address()
[Histórico]
Versão | Mudanças |
---|---|
v18.4.0 | A propriedade family agora retorna uma string em vez de um número. |
v18.0.0 | A propriedade family agora retorna um número em vez de uma string. |
v0.1.90 | Adicionado em: v0.1.90 |
- Retorna: <Object>
Retorna o address
vinculado, o nome da family
do endereço e a port
do socket conforme relatado pelo sistema operacional: { port: 12346, family: 'IPv4', address: '127.0.0.1' }
socket.autoSelectFamilyAttemptedAddresses
Adicionado em: v19.4.0, v18.18.0
Esta propriedade está presente apenas se o algoritmo de autoseleção de família estiver habilitado em socket.connect(options)
e é um array dos endereços que foram tentados.
Cada endereço é uma string no formato $IP:$PORT
. Se a conexão foi bem-sucedida, o último endereço é aquele ao qual o socket está atualmente conectado.
socket.bufferSize
Adicionado em: v0.3.8
Obsoleto desde: v14.6.0
[Estável: 0 - Obsoleto]
Estável: 0 Estabilidade: 0 - Obsoleto: Use writable.writableLength
em vez disso.
Esta propriedade mostra o número de caracteres em buffer para escrita. O buffer pode conter strings cujo comprimento após a codificação ainda não é conhecido. Portanto, este número é apenas uma aproximação do número de bytes no buffer.
net.Socket
tem a propriedade de que socket.write()
sempre funciona. Isso é para ajudar os usuários a começar a usar rapidamente. O computador nem sempre consegue acompanhar a quantidade de dados gravados em um socket. A conexão de rede pode simplesmente ser muito lenta. O Node.js irá internamente enfileirar os dados gravados em um socket e enviá-los pela rede quando for possível.
A consequência desse buffering interno é que a memória pode crescer. Os usuários que experimentam bufferSize
grande ou crescente devem tentar "restringir" os fluxos de dados em seu programa com socket.pause()
e socket.resume()
.
socket.bytesRead
Adicionado em: v0.5.3
A quantidade de bytes recebidos.
socket.bytesWritten
Adicionado em: v0.5.3
A quantidade de bytes enviados.
socket.connect()
Inicia uma conexão em um determinado socket.
Possíveis assinaturas:
socket.connect(options[, connectListener])
socket.connect(path[, connectListener])
para conexões IPC.socket.connect(port[, host][, connectListener])
para conexões TCP.- Retorna: <net.Socket> O próprio socket.
Esta função é assíncrona. Quando a conexão é estabelecida, o evento 'connect'
será emitido. Se houver um problema ao conectar, em vez de um evento 'connect'
, um evento 'error'
será emitido com o erro passado para o listener 'error'
. O último parâmetro connectListener
, se fornecido, será adicionado como um listener para o evento 'connect'
uma vez.
Esta função deve ser usada apenas para reconectar um socket após 'close'
ter sido emitido ou, caso contrário, pode levar a um comportamento indefinido.
socket.connect(options[, connectListener])
[Histórico]
Versão | Mudanças |
---|---|
v19.4.0 | O valor padrão para a opção autoSelectFamily pode ser alterado em tempo de execução usando setDefaultAutoSelectFamily ou através da opção de linha de comando --enable-network-family-autoselection . |
v20.0.0, v18.18.0 | O valor padrão para a opção autoSelectFamily agora é true. O sinalizador CLI --enable-network-family-autoselection foi renomeado para --network-family-autoselection . O nome antigo agora é um alias, mas é desencorajado. |
v19.3.0, v18.13.0 | Adicionada a opção autoSelectFamily . |
v17.7.0, v16.15.0 | As opções noDelay , keepAlive e keepAliveInitialDelay são suportadas agora. |
v6.0.0 | A opção hints agora assume o valor padrão de 0 em todos os casos. Anteriormente, na ausência da opção family , ela assumiria o valor padrão de `dns.ADDRCONFIG |
v5.11.0 | A opção hints é suportada agora. |
v0.1.90 | Adicionado em: v0.1.90 |
options
<Objeto>connectListener
<Função> Parâmetro comum dos métodossocket.connect()
. Será adicionado como um listener para o evento'connect'
uma vez.- Retorna: <net.Socket> O próprio socket.
Inicia uma conexão em um determinado socket. Normalmente, este método não é necessário, o socket deve ser criado e aberto com net.createConnection()
. Use isso apenas ao implementar um Socket personalizado.
Para conexões TCP, as options
disponíveis são:
autoSelectFamily
<boolean>: Se definido comotrue
, ele ativa um algoritmo de detecção automática de família que implementa superficialmente a seção 5 do RFC 8305. A opçãoall
passada para lookup é definida comotrue
e o socket tenta se conectar a todos os endereços IPv6 e IPv4 obtidos, em sequência, até que uma conexão seja estabelecida. O primeiro endereço AAAA retornado é tentado primeiro, depois o primeiro endereço A retornado, depois o segundo endereço AAAA retornado e assim por diante. Cada tentativa de conexão (exceto a última) recebe a quantidade de tempo especificada pela opçãoautoSelectFamilyAttemptTimeout
antes de expirar o tempo limite e tentar o próximo endereço. Ignorado se a opçãofamily
não for0
ou selocalAddress
estiver definido. Erros de conexão não são emitidos se pelo menos uma conexão for bem-sucedida. Se todas as tentativas de conexão falharem, um únicoAggregateError
com todas as tentativas com falha é emitido. Padrão:net.getDefaultAutoSelectFamily()
.autoSelectFamilyAttemptTimeout
<number>: A quantidade de tempo em milissegundos para esperar que uma tentativa de conexão termine antes de tentar o próximo endereço ao usar a opçãoautoSelectFamily
. Se definido como um número inteiro positivo menor que10
, o valor10
será usado em vez disso. Padrão:net.getDefaultAutoSelectFamilyAttemptTimeout()
.family
<number>: Versão da pilha IP. Deve ser4
,6
ou0
. O valor0
indica que os endereços IPv4 e IPv6 são permitidos. Padrão:0
.hints
<number>dns.lookup()
dicas opcionais.host
<string> Host ao qual o socket deve se conectar. Padrão:'localhost'
.keepAlive
<boolean> Se definido comotrue
, ele ativa a funcionalidade keep-alive no socket imediatamente após a conexão ser estabelecida, semelhante ao que é feito emsocket.setKeepAlive()
. Padrão:false
.keepAliveInitialDelay
<number> Se definido como um número positivo, ele define o atraso inicial antes que a primeira sonda keepalive seja enviada em um socket ocioso. Padrão:0
.localAddress
<string> Endereço local do qual o socket deve se conectar.localPort
<number> Porta local da qual o socket deve se conectar.lookup
<Função> Função de pesquisa personalizada. Padrão:dns.lookup()
.noDelay
<boolean> Se definido comotrue
, ele desativa o uso do algoritmo de Nagle imediatamente após o socket ser estabelecido. Padrão:false
.port
<number> Obrigatório. Porta à qual o socket deve se conectar.blockList
<net.BlockList>blockList
pode ser usado para desativar o acesso de saída a endereços IP, intervalos de IP ou sub-redes IP específicos.
Para conexões IPC, as options
disponíveis são:
path
<string> Obrigatório. Caminho ao qual o cliente deve se conectar. Veja Identificando caminhos para conexões IPC. Se fornecido, as opções específicas do TCP acima são ignoradas.
socket.connect(path[, connectListener])
path
<string> Caminho ao qual o cliente deve se conectar. Consulte Identificando caminhos para conexões IPC.connectListener
<Function> Parâmetro comum dos métodossocket.connect()
. Será adicionado como um listener para o evento'connect'
uma vez.- Retorna: <net.Socket> O próprio socket.
Inicia uma conexão IPC no socket fornecido.
Alias para socket.connect(options[, connectListener])
chamado com { path: path }
como options
.
socket.connect(port[, host][, connectListener])
Adicionado em: v0.1.90
port
<number> Porta à qual o cliente deve se conectar.host
<string> Host ao qual o cliente deve se conectar.connectListener
<Function> Parâmetro comum dos métodossocket.connect()
. Será adicionado como um listener para o evento'connect'
uma vez.- Retorna: <net.Socket> O próprio socket.
Inicia uma conexão TCP no socket fornecido.
Alias para socket.connect(options[, connectListener])
chamado com {port: port, host: host}
como options
.
socket.connecting
Adicionado em: v6.1.0
Se true
, socket.connect(options[, connectListener])
foi chamado e ainda não terminou. Ele permanecerá true
até que o socket seja conectado, então é definido como false
e o evento 'connect'
é emitido. Observe que o callback socket.connect(options[, connectListener])
é um listener para o evento 'connect'
.
socket.destroy([error])
Adicionado em: v0.1.90
error
<Object>- Retorna: <net.Socket>
Garante que não ocorra mais atividade de I/O neste socket. Destrói o fluxo e fecha a conexão.
Veja writable.destroy()
para mais detalhes.
socket.destroyed
- <boolean> Indica se a conexão está destruída ou não. Uma vez que uma conexão é destruída, nenhum dado adicional pode ser transferido usando-a.
Veja writable.destroyed
para mais detalhes.
socket.destroySoon()
Adicionado em: v0.3.4
Destrói o socket após todos os dados serem escritos. Se o evento 'finish'
já foi emitido, o socket é destruído imediatamente. Se o socket ainda é gravável, ele implicitamente chama socket.end()
.
socket.end([data[, encoding]][, callback])
Adicionado em: v0.1.90
data
<string> | <Buffer> | <Uint8Array>encoding
<string> Usado apenas quando os dados sãostring
. Padrão:'utf8'
.callback
<Function> Callback opcional para quando o socket é finalizado.- Retorna: <net.Socket> O próprio socket.
Fecha o socket pela metade. Ou seja, ele envia um pacote FIN. É possível que o servidor ainda envie alguns dados.
Veja writable.end()
para mais detalhes.
socket.localAddress
Adicionado em: v0.9.6
A representação em string do endereço IP local no qual o cliente remoto está se conectando. Por exemplo, em um servidor que está ouvindo em '0.0.0.0'
, se um cliente se conectar em '192.168.1.1'
, o valor de socket.localAddress
seria '192.168.1.1'
.
socket.localPort
Adicionado em: v0.9.6
A representação numérica da porta local. Por exemplo, 80
ou 21
.
socket.localFamily
Adicionado em: v18.8.0, v16.18.0
A representação em string da família de IP local. 'IPv4'
ou 'IPv6'
.
socket.pause()
- Retorna: <net.Socket> O próprio socket.
Pausa a leitura de dados. Ou seja, eventos 'data'
não serão emitidos. Útil para diminuir a velocidade de um upload.
socket.pending
Adicionado em: v11.2.0, v10.16.0
Isto é true
se o socket ainda não estiver conectado, seja porque .connect()
ainda não foi chamado ou porque ainda está em processo de conexão (veja socket.connecting
).
socket.ref()
Adicionado em: v0.9.1
- Retorna: <net.Socket> O próprio socket.
O oposto de unref()
, chamar ref()
em um socket previamente unref
não permitirá que o programa saia se for o único socket restante (o comportamento padrão). Se o socket for ref
, chamar ref
novamente não terá efeito.
socket.remoteAddress
Adicionado em: v0.5.10
A representação em string do endereço IP remoto. Por exemplo, '74.125.127.100'
ou '2001:4860:a005::68'
. O valor pode ser undefined
se o socket for destruído (por exemplo, se o cliente se desconectar).
socket.remoteFamily
Adicionado em: v0.11.14
A representação em string da família de IP remota. 'IPv4'
ou 'IPv6'
. O valor pode ser undefined
se o socket for destruído (por exemplo, se o cliente se desconectar).
socket.remotePort
Adicionado em: v0.5.10
A representação numérica da porta remota. Por exemplo, 80
ou 21
. O valor pode ser undefined
se o socket for destruído (por exemplo, se o cliente desconectar).
socket.resetAndDestroy()
Adicionado em: v18.3.0, v16.17.0
- Retorna: <net.Socket>
Fecha a conexão TCP enviando um pacote RST e destrói o stream. Se este socket TCP estiver em status de conexão, ele enviará um pacote RST e destruirá este socket TCP assim que estiver conectado. Caso contrário, ele chamará socket.destroy
com um erro ERR_SOCKET_CLOSED
. Se este não for um socket TCP (por exemplo, um pipe), chamar este método lançará imediatamente um erro ERR_INVALID_HANDLE_TYPE
.
socket.resume()
- Retorna: <net.Socket> O próprio socket.
Retoma a leitura após uma chamada para socket.pause()
.
socket.setEncoding([encoding])
Adicionado em: v0.1.90
encoding
<string>- Retorna: <net.Socket> O próprio socket.
Define a codificação para o socket como um Readable Stream. Veja readable.setEncoding()
para mais informações.
socket.setKeepAlive([enable][, initialDelay])
[Histórico]
Versão | Mudanças |
---|---|
v13.12.0, v12.17.0 | Novos padrões para as opções de socket TCP_KEEPCNT e TCP_KEEPINTVL foram adicionados. |
v0.1.92 | Adicionado em: v0.1.92 |
enable
<boolean> Padrão:false
initialDelay
<number> Padrão:0
- Retorna: <net.Socket> O próprio socket.
Habilita/desabilita a funcionalidade keep-alive e, opcionalmente, define o atraso inicial antes que a primeira sonda keepalive seja enviada em um socket ocioso.
Defina initialDelay
(em milissegundos) para definir o atraso entre o último pacote de dados recebido e a primeira sonda keepalive. Definir 0
para initialDelay
deixará o valor inalterado em relação à configuração padrão (ou anterior).
Habilitar a funcionalidade keep-alive definirá as seguintes opções de socket:
SO_KEEPALIVE=1
TCP_KEEPIDLE=initialDelay
TCP_KEEPCNT=10
TCP_KEEPINTVL=1
socket.setNoDelay([noDelay])
Adicionado em: v0.1.90
noDelay
<boolean> Padrão:true
- Retorna: <net.Socket> O próprio socket.
Habilita/desabilita o uso do algoritmo de Nagle.
Quando uma conexão TCP é criada, ela terá o algoritmo de Nagle habilitado.
O algoritmo de Nagle atrasa os dados antes de serem enviados pela rede. Ele tenta otimizar a taxa de transferência em detrimento da latência.
Passar true
para noDelay
ou não passar um argumento desabilitará o algoritmo de Nagle para o socket. Passar false
para noDelay
habilitará o algoritmo de Nagle.
socket.setTimeout(timeout[, callback])
[Histórico]
Versão | Mudanças |
---|---|
v18.0.0 | Passar um callback inválido para o argumento callback agora lança ERR_INVALID_ARG_TYPE em vez de ERR_INVALID_CALLBACK . |
v0.1.90 | Adicionado em: v0.1.90 |
timeout
<number>callback
<Function>- Retorna: <net.Socket> O próprio socket.
Define o socket para timeout após timeout
milissegundos de inatividade no socket. Por padrão, net.Socket
não tem um timeout.
Quando um timeout ocioso é acionado, o socket receberá um evento 'timeout'
, mas a conexão não será interrompida. O usuário deve chamar manualmente socket.end()
ou socket.destroy()
para finalizar a conexão.
socket.setTimeout(3000);
socket.on('timeout', () => {
console.log('timeout do socket');
socket.end();
});
Se timeout
for 0, então o timeout ocioso existente é desabilitado.
O parâmetro opcional callback
será adicionado como um listener único para o evento 'timeout'
.
socket.timeout
Adicionado em: v10.7.0
O tempo limite do socket em milissegundos, conforme definido por socket.setTimeout()
. É undefined
se um tempo limite não foi definido.
socket.unref()
Adicionado em: v0.9.1
- Retorna: <net.Socket> O próprio socket.
Chamar unref()
em um socket permitirá que o programa seja encerrado se este for o único socket ativo no sistema de eventos. Se o socket já estiver unref
ed, chamar unref()
novamente não terá efeito.
socket.write(data[, encoding][, callback])
Adicionado em: v0.1.90
data
<string> | <Buffer> | <Uint8Array>encoding
<string> Usado apenas quando os dados sãostring
. Padrão:utf8
.callback
<Function>- Retorna: <boolean>
Envia dados no socket. O segundo parâmetro especifica a codificação no caso de uma string. O padrão é a codificação UTF8.
Retorna true
se todos os dados foram descarregados com sucesso para o buffer do kernel. Retorna false
se todos ou parte dos dados foram enfileirados na memória do usuário. 'drain'
será emitido quando o buffer estiver livre novamente.
O parâmetro opcional callback
será executado quando os dados forem finalmente gravados, o que pode não ser imediatamente.
Veja o método write()
do stream Writable
para mais informações.
socket.readyState
Adicionado em: v0.5.0
Esta propriedade representa o estado da conexão como uma string.
- Se o stream estiver se conectando,
socket.readyState
éopening
. - Se o stream for legível e gravável, é
open
. - Se o stream for legível e não gravável, é
readOnly
. - Se o stream não for legível e gravável, é
writeOnly
.
net.connect()
Aliases para net.createConnection()
.
Possíveis assinaturas:
net.connect(options[, connectListener])
net.connect(path[, connectListener])
para conexões IPC.net.connect(port[, host][, connectListener])
para conexões TCP.
net.connect(options[, connectListener])
Adicionado em: v0.7.0
options
<Object>connectListener
<Function>- Retorna: <net.Socket>
Alias para net.createConnection(options[, connectListener])
.
net.connect(path[, connectListener])
Adicionado em: v0.1.90
path
<string>connectListener
<Function>- Retorna: <net.Socket>
Alias para net.createConnection(path[, connectListener])
.
net.connect(port[, host][, connectListener])
Adicionado em: v0.1.90
port
<number>host
<string>connectListener
<Function>- Retorna: <net.Socket>
Alias para net.createConnection(port[, host][, connectListener])
.
net.createConnection()
Uma função de fábrica, que cria um novo net.Socket
, inicia imediatamente a conexão com socket.connect()
e, em seguida, retorna o net.Socket
que inicia a conexão.
Quando a conexão é estabelecida, um evento 'connect'
será emitido no socket retornado. O último parâmetro connectListener
, se fornecido, será adicionado como um listener para o evento 'connect'
uma vez.
Assinaturas possíveis:
net.createConnection(options[, connectListener])
net.createConnection(path[, connectListener])
para conexões IPC.net.createConnection(port[, host][, connectListener])
para conexões TCP.
A função net.connect()
é um alias para esta função.
net.createConnection(options[, connectListener])
Adicionado em: v0.1.90
options
<Object> Obrigatório. Será passado para a chamadanew net.Socket([options])
e para o métodosocket.connect(options[, connectListener])
.connectListener
<Function> Parâmetro comum das funçõesnet.createConnection()
. Se fornecido, será adicionado como um listener para o evento'connect'
no socket retornado uma vez.- Retorna: <net.Socket> O socket recém-criado usado para iniciar a conexão.
Para opções disponíveis, consulte new net.Socket([options])
e socket.connect(options[, connectListener])
.
Opções adicionais:
timeout
<number> Se definido, será usado para chamarsocket.setTimeout(timeout)
após a criação do socket, mas antes de iniciar a conexão.
A seguir, um exemplo de um cliente do servidor de eco descrito na seção net.createServer()
:
import net from 'node:net';
const client = net.createConnection({ port: 8124 }, () => {
// 'connect' listener.
console.log('connected to server!');
client.write('world!\r\n');
});
client.on('data', (data) => {
console.log(data.toString());
client.end();
});
client.on('end', () => {
console.log('disconnected from server');
});
const net = require('node:net');
const client = net.createConnection({ port: 8124 }, () => {
// 'connect' listener.
console.log('connected to server!');
client.write('world!\r\n');
});
client.on('data', (data) => {
console.log(data.toString());
client.end();
});
client.on('end', () => {
console.log('disconnected from server');
});
Para conectar no socket /tmp/echo.sock
:
const client = net.createConnection({ path: '/tmp/echo.sock' });
A seguir, um exemplo de um cliente usando a opção port
e onread
. Neste caso, a opção onread
será usada apenas para chamar new net.Socket([options])
e a opção port
será usada para chamar socket.connect(options[, connectListener])
.
import net from 'node:net';
import { Buffer } from 'node:buffer';
net.createConnection({
port: 8124,
onread: {
// Reuses a 4KiB Buffer for every read from the socket.
buffer: Buffer.alloc(4 * 1024),
callback: function(nread, buf) {
// Received data is available in `buf` from 0 to `nread`.
console.log(buf.toString('utf8', 0, nread));
},
},
});
const net = require('node:net');
net.createConnection({
port: 8124,
onread: {
// Reuses a 4KiB Buffer for every read from the socket.
buffer: Buffer.alloc(4 * 1024),
callback: function(nread, buf) {
// Received data is available in `buf` from 0 to `nread`.
console.log(buf.toString('utf8', 0, nread));
},
},
});
net.createConnection(path[, connectListener])
Adicionado em: v0.1.90
path
<string> Caminho ao qual o socket deve se conectar. Será passado parasocket.connect(path[, connectListener])
. Veja Identificação de caminhos para conexões IPC.connectListener
<Function> Parâmetro comum das funçõesnet.createConnection()
, um listener "once" para o evento'connect'
no socket iniciador. Será passado parasocket.connect(path[, connectListener])
.- Retorna: <net.Socket> O socket recém-criado usado para iniciar a conexão.
Inicia uma conexão IPC.
Esta função cria um novo net.Socket
com todas as opções definidas como padrão, inicia imediatamente a conexão com socket.connect(path[, connectListener])
, então retorna o net.Socket
que inicia a conexão.
net.createConnection(port[, host][, connectListener])
Adicionado em: v0.1.90
port
<number> Porta à qual o socket deve se conectar. Será passado parasocket.connect(port[, host][, connectListener])
.host
<string> Host ao qual o socket deve se conectar. Será passado parasocket.connect(port[, host][, connectListener])
. Padrão:'localhost'
.connectListener
<Function> Parâmetro comum das funçõesnet.createConnection()
, um listener "once" para o evento'connect'
no socket iniciador. Será passado parasocket.connect(port[, host][, connectListener])
.- Retorna: <net.Socket> O socket recém-criado usado para iniciar a conexão.
Inicia uma conexão TCP.
Esta função cria um novo net.Socket
com todas as opções definidas como padrão, inicia imediatamente a conexão com socket.connect(port[, host][, connectListener])
, então retorna o net.Socket
que inicia a conexão.
net.createServer([options][, connectionListener])
[Histórico]
Versão | Mudanças |
---|---|
v20.1.0, v18.17.0 | A opção highWaterMark agora é suportada. |
v17.7.0, v16.15.0 | As opções noDelay , keepAlive e keepAliveInitialDelay agora são suportadas. |
v0.5.0 | Adicionado em: v0.5.0 |
options
<Objeto>allowHalfOpen
<boolean> Se definido comofalse
, o socket finalizará automaticamente o lado gravável quando o lado legível terminar. Padrão:false
.highWaterMark
<number> Opcionalmente, substituireadableHighWaterMark
ewritableHighWaterMark
de todos osnet.Socket
s. Padrão: Vejastream.getDefaultHighWaterMark()
.keepAlive
<boolean> Se definido comotrue
, habilita a funcionalidade keep-alive no socket imediatamente após o recebimento de uma nova conexão de entrada, de forma semelhante ao que é feito emsocket.setKeepAlive()
. Padrão:false
.keepAliveInitialDelay
<number> Se definido como um número positivo, define o atraso inicial antes que a primeira sonda keepalive seja enviada em um socket ocioso. Padrão:0
.noDelay
<boolean> Se definido comotrue
, desativa o uso do algoritmo de Nagle imediatamente após o recebimento de uma nova conexão de entrada. Padrão:false
.pauseOnConnect
<boolean> Indica se o socket deve ser pausado em conexões de entrada. Padrão:false
.blockList
<net.BlockList>blockList
pode ser usado para desabilitar o acesso de entrada a endereços IP, intervalos de IP ou sub-redes IP específicos. Isso não funciona se o servidor estiver atrás de um proxy reverso, NAT, etc., porque o endereço verificado em relação à lista de bloqueio é o endereço do proxy ou aquele especificado pelo NAT.
connectionListener
<Function> Definido automaticamente como um listener para o evento'connection'
.Retorna: <net.Server>
Cria um novo servidor TCP ou IPC.
Se allowHalfOpen
for definido como true
, quando a outra extremidade do socket sinalizar o fim da transmissão, o servidor só enviará de volta o fim da transmissão quando socket.end()
for explicitamente chamado. Por exemplo, no contexto do TCP, quando um pacote FIN é recebido, um pacote FIN é enviado de volta somente quando socket.end()
é explicitamente chamado. Até então, a conexão está meio fechada (não legível, mas ainda gravável). Veja o evento 'end'
e RFC 1122 (seção 4.2.2.13) para obter mais informações.
Se pauseOnConnect
for definido como true
, o socket associado a cada conexão de entrada será pausado e nenhum dado será lido de seu manipulador. Isso permite que as conexões sejam passadas entre os processos sem que nenhum dado seja lido pelo processo original. Para começar a ler dados de um socket pausado, chame socket.resume()
.
O servidor pode ser um servidor TCP ou um servidor IPC, dependendo de a que ele listen()
.
Aqui está um exemplo de um servidor de eco TCP que escuta conexões na porta 8124:
import net from 'node:net';
const server = net.createServer((c) => {
// 'connection' listener.
console.log('client connected');
c.on('end', () => {
console.log('client disconnected');
});
c.write('hello\r\n');
c.pipe(c);
});
server.on('error', (err) => {
throw err;
});
server.listen(8124, () => {
console.log('server bound');
});
const net = require('node:net');
const server = net.createServer((c) => {
// 'connection' listener.
console.log('client connected');
c.on('end', () => {
console.log('client disconnected');
});
c.write('hello\r\n');
c.pipe(c);
});
server.on('error', (err) => {
throw err;
});
server.listen(8124, () => {
console.log('server bound');
});
Teste isso usando telnet
:
telnet localhost 8124
Para escutar no socket /tmp/echo.sock
:
server.listen('/tmp/echo.sock', () => {
console.log('server bound');
});
Use nc
para se conectar a um servidor de socket de domínio Unix:
nc -U /tmp/echo.sock
net.getDefaultAutoSelectFamily()
Adicionado em: v19.4.0
Obtém o valor padrão atual da opção autoSelectFamily
de socket.connect(options)
. O valor padrão inicial é true
, a menos que a opção de linha de comando --no-network-family-autoselection
seja fornecida.
- Retorna: <boolean> O valor padrão atual da opção
autoSelectFamily
.
net.setDefaultAutoSelectFamily(value)
Adicionado em: v19.4.0
Define o valor padrão da opção autoSelectFamily
de socket.connect(options)
.
value
<boolean> O novo valor padrão. O valor padrão inicial étrue
, a menos que a opção de linha de comando--no-network-family-autoselection
seja fornecida.
net.getDefaultAutoSelectFamilyAttemptTimeout()
Adicionado em: v19.8.0, v18.18.0
Obtém o valor padrão atual da opção autoSelectFamilyAttemptTimeout
de socket.connect(options)
. O valor padrão inicial é 250
ou o valor especificado por meio da opção de linha de comando --network-family-autoselection-attempt-timeout
.
- Retorna: <number> O valor padrão atual da opção
autoSelectFamilyAttemptTimeout
.
net.setDefaultAutoSelectFamilyAttemptTimeout(value)
Adicionado em: v19.8.0, v18.18.0
Define o valor padrão da opção autoSelectFamilyAttemptTimeout
de socket.connect(options)
.
value
<number> O novo valor padrão, que deve ser um número positivo. Se o número for menor que10
, o valor10
será usado em vez disso. O valor padrão inicial é250
ou o valor especificado por meio da opção de linha de comando--network-family-autoselection-attempt-timeout
.
net.isIP(input)
Adicionado em: v0.3.0
Retorna 6
se input
for um endereço IPv6. Retorna 4
se input
for um endereço IPv4 em notação decimal pontilhada sem zeros à esquerda. Caso contrário, retorna 0
.
net.isIP('::1'); // retorna 6
net.isIP('127.0.0.1'); // retorna 4
net.isIP('127.000.000.001'); // retorna 0
net.isIP('127.0.0.1/24'); // retorna 0
net.isIP('fhqwhgads'); // retorna 0
net.isIPv4(input)
Adicionado em: v0.3.0
Retorna true
se input
for um endereço IPv4 em notação decimal pontilhada sem zeros à esquerda. Caso contrário, retorna false
.
net.isIPv4('127.0.0.1'); // retorna true
net.isIPv4('127.000.000.001'); // retorna false
net.isIPv4('127.0.0.1/24'); // retorna false
net.isIPv4('fhqwhgads'); // retorna false
net.isIPv6(input)
Adicionado em: v0.3.0
Retorna true
se input
for um endereço IPv6. Caso contrário, retorna false
.
net.isIPv6('::1'); // retorna true
net.isIPv6('fhqwhgads'); // retorna false