Réseau
[Stable : 2 - Stable]
Stable : 2 Stabilité : 2 - Stable
Code source : lib/net.js
Le module node:net
fournit une API réseau asynchrone pour créer des serveurs TCP ou IPC (net.createServer()
) et des clients (net.createConnection()
) basés sur des flux.
Il est accessible via :
import net from 'node:net'
const net = require('node:net')
Prise en charge IPC
[Historique]
Version | Modifications |
---|---|
v20.8.0 | Prise en charge de la liaison à un chemin de socket de domaine Unix abstrait comme \0abstract . On pouvait lier '\0' pour Node.js \< v20.4.0 . |
Le module node:net
prend en charge l’IPC avec les pipes nommées sous Windows et les sockets de domaine Unix sur les autres systèmes d’exploitation.
Identification des chemins pour les connexions IPC
net.connect()
, net.createConnection()
, server.listen()
et socket.connect()
prennent un paramètre path
pour identifier les points de terminaison IPC.
Sous Unix, le domaine local est également connu sous le nom de domaine Unix. Le chemin est un nom de fichier système. Une erreur sera levée si la longueur du nom de chemin est supérieure à la longueur de sizeof(sockaddr_un.sun_path)
. Les valeurs typiques sont 107 octets sous Linux et 103 octets sous macOS. Si une abstraction de l’API Node.js crée le socket de domaine Unix, elle supprimera également le socket de domaine Unix. Par exemple, net.createServer()
peut créer un socket de domaine Unix et server.close()
le supprimera. Mais si un utilisateur crée le socket de domaine Unix en dehors de ces abstractions, l’utilisateur devra le supprimer. Il en va de même lorsqu’une API Node.js crée un socket de domaine Unix, mais que le programme plante ensuite. En bref, un socket de domaine Unix sera visible dans le système de fichiers et persistera jusqu’à ce qu’il soit supprimé. Sous Linux, vous pouvez utiliser un socket abstrait Unix en ajoutant \0
au début du chemin, par exemple \0abstract
. Le chemin vers le socket abstrait Unix n’est pas visible dans le système de fichiers et il disparaîtra automatiquement lorsque toutes les références ouvertes au socket seront fermées.
Sous Windows, le domaine local est implémenté à l’aide d’une pipe nommée. Le chemin doit faire référence à une entrée dans \\?\pipe\
ou \\.\pipe\
. Tous les caractères sont autorisés, mais ce dernier peut effectuer un certain traitement des noms de pipes, comme la résolution des séquences ..
. Malgré son apparence, l’espace de noms des pipes est plat. Les pipes ne persisteront pas. Elles sont supprimées lorsque la dernière référence à celles-ci est fermée. Contrairement aux sockets de domaine Unix, Windows fermera et supprimera la pipe lorsque le processus propriétaire se termine.
L’échappement des chaînes JavaScript nécessite que les chemins soient spécifiés avec un échappement de barre oblique inverse supplémentaire, tel que :
net.createServer().listen(path.join('\\\\?\\pipe', process.cwd(), 'myctl'))
Classe : net.BlockList
Ajouté dans : v15.0.0, v14.18.0
L'objet BlockList
peut être utilisé avec certaines API réseau pour spécifier des règles de désactivation de l'accès entrant ou sortant à des adresses IP, des plages d'adresses IP ou des sous-réseaux IP spécifiques.
blockList.addAddress(address[, type])
Ajouté dans : v15.0.0, v14.18.0
address
<string> | <net.SocketAddress> Une adresse IPv4 ou IPv6.type
<string> Soit'ipv4'
ou'ipv6'
. Par défaut :'ipv4'
.
Ajoute une règle pour bloquer l'adresse IP donnée.
blockList.addRange(start, end[, type])
Ajouté dans : v15.0.0, v14.18.0
start
<string> | <net.SocketAddress> L'adresse IPv4 ou IPv6 de départ de la plage.end
<string> | <net.SocketAddress> L'adresse IPv4 ou IPv6 de fin de la plage.type
<string> Soit'ipv4'
ou'ipv6'
. Par défaut :'ipv4'
.
Ajoute une règle pour bloquer une plage d'adresses IP de start
(inclus) à end
(inclus).
blockList.addSubnet(net, prefix[, type])
Ajouté dans : v15.0.0, v14.18.0
net
<string> | <net.SocketAddress> L'adresse réseau IPv4 ou IPv6.prefix
<number> Le nombre de bits de préfixe CIDR. Pour IPv4, cela doit être une valeur comprise entre0
et32
. Pour IPv6, cela doit être compris entre0
et128
.type
<string> Soit'ipv4'
ou'ipv6'
. Par défaut :'ipv4'
.
Ajoute une règle pour bloquer une plage d'adresses IP spécifiée sous forme de masque de sous-réseau.
blockList.check(address[, type])
Ajouté dans : v15.0.0, v14.18.0
address
<string> | <net.SocketAddress> L'adresse IP à vérifiertype
<string> Soit'ipv4'
soit'ipv6'
. Par défaut :'ipv4'
.- Retourne : <boolean>
Retourne true
si l'adresse IP donnée correspond à l'une des règles ajoutées à 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')) // Affiche : true
console.log(blockList.check('10.0.0.3')) // Affiche : true
console.log(blockList.check('222.111.111.222')) // Affiche : false
// La notation IPv6 pour les adresses IPv4 fonctionne :
console.log(blockList.check('::ffff:7b7b:7b7b', 'ipv6')) // Affiche : true
console.log(blockList.check('::ffff:123.123.123.123', 'ipv6')) // Affiche : true
blockList.rules
Ajouté dans : v15.0.0, v14.18.0
- Type : <string[]>
La liste des règles ajoutées à la liste de blocage.
BlockList.isBlockList(value)
Ajouté dans : v23.4.0
value
<any> Toute valeur JS- Retourne
true
si lavalue
est unenet.BlockList
.
Classe : net.SocketAddress
Ajouté dans : v15.14.0, v14.18.0
new net.SocketAddress([options])
Ajouté dans : v15.14.0, v14.18.0
options
<Object>address
<string> L'adresse réseau sous forme de chaîne IPv4 ou IPv6. Par défaut :'127.0.0.1'
sifamily
est'ipv4'
;'::'
sifamily
est'ipv6'
.family
<string>'ipv4'
ou'ipv6'
. Par défaut :'ipv4'
.flowlabel
<number> Un flow-label IPv6 utilisé uniquement sifamily
est'ipv6'
.port
<number> Un port IP.
socketaddress.address
Ajouté dans : v15.14.0, v14.18.0
- Type <string>
socketaddress.family
Ajouté dans : v15.14.0, v14.18.0
- Type <string> Soit
'ipv4'
ou'ipv6'
.
socketaddress.flowlabel
Ajouté dans : v15.14.0, v14.18.0
- Type <number>
socketaddress.port
Ajouté dans : v15.14.0, v14.18.0
- Type <number>
SocketAddress.parse(input)
Ajouté dans : v23.4.0
input
<string> Une chaîne de caractères contenant une adresse IP et un port optionnel, par exemple :123.1.2.3:1234
ou[1::1]:1234
.- Retourne : <net.SocketAddress> Retourne un
SocketAddress
si l'analyse a réussi. Sinon, retourneundefined
.
Classe : net.Server
Ajouté dans : v0.1.90
- Étend : <EventEmitter>
Cette classe est utilisée pour créer un serveur TCP ou IPC.
new net.Server([options][, connectionListener])
options
<Object> Voirnet.createServer([options][, connectionListener])
.connectionListener
<Function> Automatiquement défini comme écouteur pour l'événement'connection'
.- Retourne : <net.Server>
net.Server
est un EventEmitter
avec les événements suivants :
Événement : 'close'
Ajouté dans : v0.5.0
Émis lorsque le serveur se ferme. Si des connexions existent, cet événement n'est pas émis tant que toutes les connexions ne sont pas terminées.
Événement : 'connection'
Ajouté dans : v0.1.90
- <net.Socket> L'objet de connexion
Émis lorsqu'une nouvelle connexion est établie. socket
est une instance de net.Socket
.
Événement : 'error'
Ajouté dans : v0.1.90
Émis lorsqu'une erreur se produit. Contrairement à net.Socket
, l'événement 'close'
ne sera pas émis directement après cet événement, sauf si server.close()
est appelé manuellement. Voir l'exemple dans la discussion de server.listen()
.
Événement : 'listening'
Ajouté dans : v0.1.90
Émis lorsque le serveur a été lié après avoir appelé server.listen()
.
Événement : 'drop'
Ajouté dans : v18.6.0, v16.17.0
Lorsque le nombre de connexions atteint le seuil de server.maxConnections
, le serveur rejettera les nouvelles connexions et émettra l'événement 'drop'
à la place. S'il s'agit d'un serveur TCP, l'argument est le suivant, sinon l'argument est undefined
.
data
<Object> L'argument passé à l'écouteur d'événements.
server.address()
[Historique]
Version | Modifications |
---|---|
v18.4.0 | La propriété family retourne désormais une chaîne de caractères au lieu d'un nombre. |
v18.0.0 | La propriété family retourne désormais un nombre au lieu d'une chaîne de caractères. |
v0.1.90 | Ajouté dans : v0.1.90 |
Retourne l'adresse address
liée, le nom de la family
de l'adresse, et le port
du serveur tels que rapportés par le système d'exploitation s'il est à l'écoute sur un socket IP (utile pour trouver quel port a été assigné lors de l'obtention d'une adresse assignée par le système d'exploitation) : { port: 12346, family: 'IPv4', address: '127.0.0.1' }
.
Pour un serveur écoutant sur un tube ou un socket de domaine Unix, le nom est retourné sous forme de chaîne.
const server = net
.createServer(socket => {
socket.end('au revoir\n')
})
.on('error', err => {
// Gérer les erreurs ici.
throw err
})
// Récupérer un port inutilisé arbitraire.
server.listen(() => {
console.log('serveur ouvert sur', server.address())
})
server.address()
retourne null
avant que l'événement 'listening'
n'ait été émis ou après avoir appelé server.close()
.
server.close([callback])
Ajouté dans : v0.1.90
callback
<Function> Appelée lorsque le serveur est fermé.- Retourne : <net.Server>
Empêche le serveur d'accepter de nouvelles connexions et maintient les connexions existantes. Cette fonction est asynchrone, le serveur est finalement fermé lorsque toutes les connexions sont terminées et que le serveur émet un événement 'close'
. La callback
facultative sera appelée une fois que l'événement 'close'
se produira. Contrairement à cet événement, elle sera appelée avec une Error
comme seul argument si le serveur n'était pas ouvert lorsqu'il a été fermé.
server[Symbol.asyncDispose]()
Ajouté dans : v20.5.0, v18.18.0
[Stable: 1 - Expérimental]
Stable: 1 Stability: 1 - Expérimental
Appelle server.close()
et renvoie une promesse qui est résolue lorsque le serveur est fermé.
server.getConnections(callback)
Ajouté dans : v0.9.7
callback
<Fonction>- Retourne : <net.Server>
Récupère de manière asynchrone le nombre de connexions simultanées sur le serveur. Fonctionne lorsque des sockets ont été envoyés à des forks.
Le callback doit prendre deux arguments : err
et count
.
server.listen()
Démarre un serveur écoutant les connexions. Un net.Server
peut être un serveur TCP ou un serveur IPC selon ce qu’il écoute.
Signatures possibles :
server.listen(handle[, backlog][, callback])
server.listen(options[, callback])
server.listen(path[, backlog][, callback])
pour les serveurs IPCserver.listen([port[, host[, backlog]]][, callback])
pour les serveurs TCP
Cette fonction est asynchrone. Lorsque le serveur commence à écouter, l’événement 'listening'
est émis. Le dernier paramètre callback
sera ajouté en tant qu’écouteur de l’événement 'listening'
.
Toutes les méthodes listen()
peuvent prendre un paramètre backlog
pour spécifier la longueur maximale de la file d’attente des connexions en attente. La longueur réelle sera déterminée par le système d’exploitation via des paramètres sysctl tels que tcp_max_syn_backlog
et somaxconn
sur Linux. La valeur par défaut de ce paramètre est de 511 (et non 512).
Tous les net.Socket
sont définis sur SO_REUSEADDR
(voir socket(7)
pour plus de détails).
La méthode server.listen()
peut être appelée de nouveau si et seulement si une erreur s’est produite lors du premier appel de server.listen()
ou si server.close()
a été appelé. Sinon, une erreur ERR_SERVER_ALREADY_LISTEN
sera levée.
L’une des erreurs les plus courantes levées lors de l’écoute est EADDRINUSE
. Cela se produit lorsqu’un autre serveur écoute déjà sur le port
/path
/handle
demandé. Une façon de gérer cela serait de réessayer après un certain temps :
server.on('error', e => {
if (e.code === 'EADDRINUSE') {
console.error('Adresse déjà utilisée, nouvelle tentative...')
setTimeout(() => {
server.close()
server.listen(PORT, HOST)
}, 1000)
}
})
server.listen(handle[, backlog][, callback])
Ajouté dans : v0.5.10
handle
<Object>backlog
<number> Paramètre commun des fonctionsserver.listen()
callback
<Function>- Renvoie : <net.Server>
Démarre un serveur écoutant les connexions sur un handle
donné qui a déjà été lié à un port, un socket de domaine Unix ou un pipe nommé Windows.
L'objet handle
peut être soit un serveur, soit un socket (tout élément avec un membre _handle
sous-jacent), soit un objet avec un membre fd
qui est un descripteur de fichier valide.
L'écoute sur un descripteur de fichier n'est pas prise en charge sous Windows.
server.listen(options[, callback])
[Historique]
Version | Modifications |
---|---|
v23.1.0 | L'option reusePort est prise en charge. |
v15.6.0 | La prise en charge de AbortSignal a été ajoutée. |
v11.4.0 | L'option ipv6Only est prise en charge. |
v0.11.14 | Ajouté dans : v0.11.14 |
options
<Object> Requis. Prend en charge les propriétés suivantes :backlog
<number> Paramètre commun des fonctionsserver.listen()
.exclusive
<boolean> Par défaut :false
host
<string>ipv6Only
<boolean> Pour les serveurs TCP, définiripv6Only
surtrue
désactivera la prise en charge de la double pile, c'est-à-dire que la liaison à l'hôte::
n'entraînera pas la liaison de0.0.0.0
. Par défaut :false
.reusePort
<boolean> Pour les serveurs TCP, définirreusePort
surtrue
permet à plusieurs sockets sur le même hôte de se lier au même port. Les connexions entrantes sont distribuées par le système d'exploitation aux sockets d'écoute. Cette option n'est disponible que sur certaines plateformes, telles que Linux 3.9+, DragonFlyBSD 3.6+, FreeBSD 12.0+, Solaris 11.4 et AIX 7.2.5+. Par défaut :false
.path
<string> Sera ignoré siport
est spécifié. Voir Identification des chemins pour les connexions IPC.port
<number>readableAll
<boolean> Pour les serveurs IPC, rend le pipe lisible pour tous les utilisateurs. Par défaut :false
.signal
<AbortSignal> Un AbortSignal qui peut être utilisé pour fermer un serveur d'écoute.writableAll
<boolean> Pour les serveurs IPC, rend le pipe accessible en écriture pour tous les utilisateurs. Par défaut :false
.
callback
<Function> functions.Renvoie : <net.Server>
Si port
est spécifié, il se comporte comme server.listen([port[, host[, backlog]]][, callback])
. Sinon, si path
est spécifié, il se comporte comme server.listen(path[, backlog][, callback])
. Si aucun d'eux n'est spécifié, une erreur sera levée.
Si exclusive
est false
(par défaut), les workers de cluster utiliseront le même handle sous-jacent, ce qui permettra de partager les tâches de gestion des connexions. Lorsque exclusive
est true
, le handle n'est pas partagé et la tentative de partage de port entraîne une erreur. Un exemple d'écoute sur un port exclusif est présenté ci-dessous.
server.listen({
host: 'localhost',
port: 80,
exclusive: true,
})
Lorsque exclusive
est true
et que le handle sous-jacent est partagé, il est possible que plusieurs workers interrogent un handle avec des files d'attente différentes. Dans ce cas, la première backlog
passée au processus maître sera utilisée.
Le démarrage d'un serveur IPC en tant que root peut empêcher l'accès au chemin du serveur pour les utilisateurs non privilégiés. L'utilisation de readableAll
et writableAll
rendra le serveur accessible à tous les utilisateurs.
Si l'option signal
est activée, l'appel de .abort()
sur le AbortController
correspondant est similaire à l'appel de .close()
sur le serveur :
const controller = new AbortController()
server.listen({
host: 'localhost',
port: 80,
signal: controller.signal,
})
// Plus tard, lorsque vous souhaitez fermer le serveur.
controller.abort()
server.listen(path[, backlog][, callback])
Ajouté dans : v0.1.90
path
<string> Chemin que le serveur doit écouter. Voir Identification des chemins pour les connexions IPC.backlog
<number> Paramètre commun des fonctionsserver.listen()
.callback
<Function>.- Retourne : <net.Server>
Démarre un serveur IPC qui écoute les connexions sur le chemin
donné.
server.listen([port[, host[, backlog]]][, callback])
Ajouté dans : v0.1.90
port
<number>host
<string>backlog
<number> Paramètre commun des fonctionsserver.listen()
.callback
<Function>.- Retourne : <net.Server>
Démarre un serveur TCP qui écoute les connexions sur le port
et l'hôte
donnés.
Si port
est omis ou est 0, le système d’exploitation attribuera un port inutilisé arbitraire, qui peut être récupéré en utilisant server.address().port
après que l’événement 'listening'
a été émis.
Si host
est omis, le serveur acceptera les connexions sur l'adresse IPv6 non spécifiée (::
) lorsque IPv6 est disponible, ou l'adresse IPv4 non spécifiée (0.0.0.0
) dans le cas contraire.
Dans la plupart des systèmes d’exploitation, l’écoute de l'adresse IPv6 non spécifiée (::
) peut amener net.Server
à écouter également sur l'adresse IPv4 non spécifiée (0.0.0.0
).
server.listening
Ajouté dans : v5.7.0
- <boolean> Indique si le serveur est à l'écoute des connexions.
server.maxConnections
[Historique]
Version | Modifications |
---|---|
v21.0.0 | Définir maxConnections à 0 supprime toutes les connexions entrantes. Auparavant, il était interprété comme Infinity . |
v0.2.0 | Ajouté dans : v0.2.0 |
Lorsque le nombre de connexions atteint le seuil server.maxConnections
:
Il n'est pas recommandé d'utiliser cette option une fois qu'un socket a été envoyé à un enfant avec child_process.fork()
.
server.dropMaxConnection
Ajouté dans : v23.1.0
Définissez cette propriété sur true
pour commencer à fermer les connexions une fois que le nombre de connexions atteint le seuil [server.maxConnections
][]. Ce paramètre n'est effectif qu'en mode cluster.
server.ref()
Ajouté dans : v0.9.1
- Renvoie : <net.Server>
À l'opposé de unref()
, appeler ref()
sur un serveur précédemment unref
n'empêchera pas le programme de se terminer s'il s'agit du seul serveur restant (le comportement par défaut). Si le serveur est ref
, appeler ref()
à nouveau n'aura aucun effet.
server.unref()
Ajouté dans : v0.9.1
- Renvoie : <net.Server>
Appeler unref()
sur un serveur permettra au programme de se terminer s'il s'agit du seul serveur actif dans le système d'événements. Si le serveur est déjà unref
, appeler unref()
à nouveau n'aura aucun effet.
Classe : net.Socket
Ajouté dans : v0.3.4
- Étend : <stream.Duplex>
Cette classe est une abstraction d'un socket TCP ou d'un point de terminaison IPC en flux continu (utilise des pipes nommés sous Windows et des sockets de domaine Unix sinon). C'est aussi un EventEmitter
.
Un net.Socket
peut être créé par l'utilisateur et utilisé directement pour interagir avec un serveur. Par exemple, il est renvoyé par net.createConnection()
, afin que l'utilisateur puisse l'utiliser pour parler au serveur.
Il peut également être créé par Node.js et transmis à l'utilisateur lorsqu'une connexion est reçue. Par exemple, il est transmis aux écouteurs d'un événement 'connection'
émis sur un net.Server
, afin que l'utilisateur puisse l'utiliser pour interagir avec le client.
new net.Socket([options])
[Historique]
Version | Modifications |
---|---|
v15.14.0 | Ajout du support pour AbortSignal. |
v12.10.0 | Ajout de l'option onread . |
v0.3.4 | Ajouté dans : v0.3.4 |
options
<Object> Les options disponibles sont :allowHalfOpen
<boolean> Si la valeur estfalse
, le socket mettra automatiquement fin au côté accessible en écriture lorsque le côté accessible en lecture se terminera. Voirnet.createServer()
et l’événement'end'
pour plus de détails. Par défaut :false
.fd
<number> S’il est spécifié, entoure un socket existant avec le descripteur de fichier donné, sinon un nouveau socket sera créé.onread
<Object> S’il est spécifié, les données entrantes sont stockées dans un seulbuffer
et transmises aucallback
fourni lorsque les données arrivent sur le socket. Cela entraînera l’arrêt de la fonctionnalité de diffusion en continu. Le socket émettra des événements tels que'error'
,'end'
et'close'
comme d’habitude. Les méthodes telles quepause()
etresume()
se comporteront également comme prévu.buffer
<Buffer> | <Uint8Array> | <Function> Soit un morceau de mémoire réutilisable à utiliser pour stocker les données entrantes, soit une fonction qui en retourne un tel.callback
<Function> Cette fonction est appelée pour chaque bloc de données entrantes. Deux arguments lui sont transmis : le nombre d’octets écrits dansbuffer
et une référence àbuffer
. Retournezfalse
à partir de cette fonction pourpause()
implicitement le socket. Cette fonction sera exécutée dans le contexte global.readable
<boolean> Autorise les lectures sur le socket lorsqu’unfd
est transmis, sinon ignoré. Par défaut :false
.signal
<AbortSignal> Un signal d’abandon qui peut être utilisé pour détruire le socket.writable
<boolean> Autorise les écritures sur le socket lorsqu’unfd
est transmis, sinon ignoré. Par défaut :false
.
Retourne : <net.Socket>
Crée un nouvel objet socket.
Le socket nouvellement créé peut être soit un socket TCP, soit un point de terminaison IPC de diffusion en continu, selon ce à quoi il se connect()
.
Événement : 'close'
Ajouté dans : v0.1.90
hadError
<boolean>true
si le socket a eu une erreur de transmission.
Émis une fois que le socket est complètement fermé. L'argument hadError
est un booléen qui indique si le socket a été fermé en raison d'une erreur de transmission.
Événement : 'connect'
Ajouté dans : v0.1.90
Émis lorsqu'une connexion socket est établie avec succès. Voir net.createConnection()
.
Événement : 'connectionAttempt'
Ajouté dans : v21.6.0, v20.12.0
ip
<string> L'adresse IP à laquelle le socket tente de se connecter.port
<number> Le port auquel le socket tente de se connecter.family
<number> La famille de l'adresse IP. Elle peut être6
pour IPv6 ou4
pour IPv4.
Émis lorsqu'une nouvelle tentative de connexion démarre. Ceci peut être émis plusieurs fois si l'algorithme de sélection automatique de la famille est activé dans socket.connect(options)
.
Événement : 'connectionAttemptFailed'
Ajouté dans : v21.6.0, v20.12.0
ip
<string> L'adresse IP à laquelle le socket a tenté de se connecter.port
<number> Le port auquel le socket a tenté de se connecter.family
<number> La famille de l'adresse IP. Elle peut être6
pour IPv6 ou4
pour IPv4.error
<Error> L'erreur associée à l'échec.
Émis lorsqu'une tentative de connexion a échoué. Ceci peut être émis plusieurs fois si l'algorithme de sélection automatique de la famille est activé dans socket.connect(options)
.
Événement : 'connectionAttemptTimeout'
Ajouté dans : v21.6.0, v20.12.0
ip
<string> L'adresse IP à laquelle le socket a tenté de se connecter.port
<number> Le port auquel le socket a tenté de se connecter.family
<number> La famille de l'adresse IP. Elle peut être6
pour IPv6 ou4
pour IPv4.
Émis lorsqu'une tentative de connexion a expiré. Cet événement n'est émis (et peut être émis plusieurs fois) que si l'algorithme de sélection automatique de la famille est activé dans socket.connect(options)
.
Événement : 'data'
Ajouté dans : v0.1.90
Émis lorsque des données sont reçues. L'argument data
sera un Buffer
ou une String
. L'encodage des données est défini par socket.setEncoding()
.
Les données seront perdues s'il n'y a pas d'écouteur lorsqu'un Socket
émet un événement 'data'
.
Événement : 'drain'
Ajouté dans : v0.1.90
Émis lorsque le tampon d'écriture devient vide. Peut être utilisé pour limiter les chargements.
Voir aussi : les valeurs de retour de socket.write()
.
Événement : 'end'
Ajouté dans : v0.1.90
Émis lorsque l'autre extrémité du socket signale la fin de la transmission, ce qui met fin au côté lisible du socket.
Par défaut (allowHalfOpen
est false
), le socket renverra un paquet de fin de transmission et détruira son descripteur de fichier une fois qu'il aura écrit sa file d'attente d'écriture en attente. Cependant, si allowHalfOpen
est défini sur true
, le socket ne fera pas automatiquement end()
de son côté accessible en écriture, ce qui permet à l'utilisateur d'écrire des quantités arbitraires de données. L'utilisateur doit appeler explicitement end()
pour fermer la connexion (c'est-à-dire envoyer un paquet FIN en retour).
Événement : 'error'
Ajouté dans : v0.1.90
Émis lorsqu'une erreur se produit. L'événement 'close'
sera appelé directement après cet événement.
Événement : 'lookup'
[Historique]
Version | Modifications |
---|---|
v5.10.0 | Le paramètre host est désormais pris en charge. |
v0.11.3 | Ajouté dans : v0.11.3 |
Émis après la résolution du nom d'hôte mais avant la connexion. Non applicable aux sockets Unix.
err
<Error> | <null> L'objet erreur. Voirdns.lookup()
.address
<string> L'adresse IP.family
<number> | <null> Le type d'adresse. Voirdns.lookup()
.host
<string> Le nom d'hôte.
Événement : 'ready'
Ajouté dans : v9.11.0
Émis lorsqu'un socket est prêt à être utilisé.
Déclenché immédiatement après 'connect'
.
Événement : 'timeout'
Ajouté dans : v0.1.90
Émis si le socket expire par inactivité. Ceci sert uniquement à notifier que le socket est resté inactif. L'utilisateur doit fermer manuellement la connexion.
Voir aussi : socket.setTimeout()
.
socket.address()
[Historique]
Version | Modifications |
---|---|
v18.4.0 | La propriété family renvoie désormais une chaîne au lieu d'un nombre. |
v18.0.0 | La propriété family renvoie désormais un nombre au lieu d'une chaîne. |
v0.1.90 | Ajouté dans : v0.1.90 |
- Retourne : <Object>
Retourne l'address
lié, le nom de family
d'adresse et le port
du socket tels que rapportés par le système d'exploitation : { port: 12346, family: 'IPv4', address: '127.0.0.1' }
socket.autoSelectFamilyAttemptedAddresses
Ajouté dans : v19.4.0, v18.18.0
Cette propriété est uniquement présente si l’algorithme de sélection automatique de famille est activé dans socket.connect(options)
et il s’agit d’un tableau des adresses qui ont été tentées.
Chaque adresse est une chaîne de caractères sous la forme $IP:$PORT
. Si la connexion a réussi, la dernière adresse est celle à laquelle le socket est actuellement connecté.
socket.bufferSize
Ajouté dans : v0.3.8
Déprécié depuis : v14.6.0
[Stable: 0 - Déprécié]
Stable : 0 Stabilité : 0 - Déprécié : utilisez plutôt writable.writableLength
.
Cette propriété affiche le nombre de caractères mis en mémoire tampon pour l’écriture. La mémoire tampon peut contenir des chaînes de caractères dont la longueur après l’encodage n’est pas encore connue. Ce nombre n’est donc qu’une approximation du nombre d’octets dans la mémoire tampon.
net.Socket
a la propriété que socket.write()
fonctionne toujours. Ceci afin d’aider les utilisateurs à démarrer et à fonctionner rapidement. L’ordinateur ne peut pas toujours suivre la quantité de données qui sont écrites dans un socket. La connexion réseau peut être tout simplement trop lente. Node.js mettra en file d’attente en interne les données écrites dans un socket et les enverra via le réseau lorsque cela est possible.
La conséquence de cette mise en mémoire tampon interne est que la mémoire peut augmenter. Les utilisateurs qui rencontrent une bufferSize
importante ou croissante doivent essayer de « limiter » les flux de données dans leur programme avec socket.pause()
et socket.resume()
.
socket.bytesRead
Ajouté dans : v0.5.3
La quantité d’octets reçus.
socket.bytesWritten
Ajouté dans : v0.5.3
Quantité d'octets envoyés.
socket.connect()
Amorce une connexion sur un socket donné.
Signatures possibles :
socket.connect(options[, connectListener])
socket.connect(path[, connectListener])
pour les connexions IPC.socket.connect(port[, host][, connectListener])
pour les connexions TCP.- Retourne : <net.Socket> Le socket lui-même.
Cette fonction est asynchrone. Lorsque la connexion est établie, l'événement 'connect'
est émis. S'il y a un problème de connexion, au lieu d'un événement 'connect'
, un événement 'error'
sera émis avec l'erreur transmise au listener 'error'
. Le dernier paramètre connectListener
, s'il est fourni, sera ajouté en tant que listener pour l'événement 'connect'
une seule fois.
Cette fonction ne doit être utilisée que pour reconnecter un socket après l'émission de 'close'
, sinon elle peut entraîner un comportement indéfini.
socket.connect(options[, connectListener])
[Historique]
Version | Changements |
---|---|
v19.4.0 | La valeur par défaut de l'option autoSelectFamily peut être modifiée au moment de l'exécution à l'aide de setDefaultAutoSelectFamily ou via l'option de ligne de commande --enable-network-family-autoselection . |
v20.0.0, v18.18.0 | La valeur par défaut de l'option autoSelectFamily est désormais true. L'indicateur CLI --enable-network-family-autoselection a été renommé en --network-family-autoselection . L'ancien nom est désormais un alias, mais il est déconseillé. |
v19.3.0, v18.13.0 | Ajout de l'option autoSelectFamily . |
v17.7.0, v16.15.0 | Les options noDelay , keepAlive et keepAliveInitialDelay sont désormais prises en charge. |
v6.0.0 | L'option hints a désormais la valeur par défaut 0 dans tous les cas. Auparavant, en l'absence de l'option family , elle était par défaut à `dns.ADDRCONFIG |
v5.11.0 | L'option hints est désormais prise en charge. |
v0.1.90 | Ajoutée dans : v0.1.90 |
options
<Objet>connectListener
<Fonction> Paramètre commun des méthodessocket.connect()
. Sera ajouté en tant que listener pour l'événement'connect'
une seule fois.- Retourne : <net.Socket> Le socket lui-même.
Amorce une connexion sur un socket donné. Normalement, cette méthode n'est pas nécessaire, le socket doit être créé et ouvert avec net.createConnection()
. N'utilisez cette méthode que lors de l'implémentation d'un Socket personnalisé.
Pour les connexions TCP, les options
disponibles sont les suivantes :
autoSelectFamily
<booléen> : S'il est défini surtrue
, il active un algorithme d'autodétection de la famille qui implémente de manière souple la section 5 de RFC 8305. L'optionall
transmise à lookup est définie surtrue
et les sockets tentent de se connecter à toutes les adresses IPv6 et IPv4 obtenues, dans l'ordre, jusqu'à ce qu'une connexion soit établie. La première adresse AAAA renvoyée est essayée en premier, puis la première adresse A renvoyée, puis la deuxième adresse AAAA renvoyée et ainsi de suite. Chaque tentative de connexion (sauf la dernière) reçoit le délai spécifié par l'optionautoSelectFamilyAttemptTimeout
avant d'expirer et d'essayer l'adresse suivante. Ignoré si l'optionfamily
n'est pas0
ou silocalAddress
est définie. Les erreurs de connexion ne sont pas émises si au moins une connexion réussit. Si toutes les tentatives de connexion échouent, une seuleAggregateError
avec toutes les tentatives échouées est émise. Par défaut :net.getDefaultAutoSelectFamily()
.autoSelectFamilyAttemptTimeout
<nombre> : Temps en millisecondes d'attente de la fin d'une tentative de connexion avant d'essayer l'adresse suivante lors de l'utilisation de l'optionautoSelectFamily
. Si elle est définie sur un entier positif inférieur à10
, la valeur10
sera utilisée à la place. Par défaut :net.getDefaultAutoSelectFamilyAttemptTimeout()
.family
<nombre> : Version de la pile IP. Doit être4
,6
ou0
. La valeur0
indique que les adresses IPv4 et IPv6 sont autorisées. Par défaut :0
.hints
<nombre> Facultatif : indicateursdns.lookup()
.host
<chaîne> Hôte auquel le socket doit se connecter. Par défaut :'localhost'
.keepAlive
<booléen> S'il est défini surtrue
, il active la fonctionnalité keep-alive sur le socket immédiatement après l'établissement de la connexion, de même que ce qui est fait danssocket.setKeepAlive()
. Par défaut :false
.keepAliveInitialDelay
<nombre> S'il est défini sur un nombre positif, il définit le délai initial avant l'envoi de la première sonde keepalive sur un socket inactif. Par défaut :0
.localAddress
<chaîne> Adresse locale à partir de laquelle le socket doit se connecter.localPort
<nombre> Port local à partir duquel le socket doit se connecter.lookup
<Fonction> Fonction de recherche personnalisée. Par défaut :dns.lookup()
.noDelay
<booléen> S'il est défini surtrue
, il désactive l'utilisation de l'algorithme de Nagle immédiatement après l'établissement du socket. Par défaut :false
.port
<nombre> Requis. Port auquel le socket doit se connecter.blockList
<net.BlockList>blockList
peut être utilisé pour désactiver l'accès sortant à des adresses IP, des plages d'adresses IP ou des sous-réseaux IP spécifiques.
Pour les connexions IPC, les options
disponibles sont les suivantes :
path
<chaîne> Requis. Chemin auquel le client doit se connecter. Voir Identification des chemins pour les connexions IPC. S'il est fourni, les options spécifiques à TCP ci-dessus sont ignorées.
socket.connect(path[, connectListener])
path
<string> Chemin auquel le client doit se connecter. Voir Identification des chemins pour les connexions IPC.connectListener
<Function> Paramètre commun des méthodessocket.connect()
. Sera ajouté en tant que listener pour l'événement'connect'
une seule fois.- Retourne : <net.Socket> Le socket lui-même.
Initie une connexion IPC sur le socket donné.
Alias de socket.connect(options[, connectListener])
appelé avec { path: path }
comme options
.
socket.connect(port[, host][, connectListener])
Ajouté dans : v0.1.90
port
<number> Port auquel le client doit se connecter.host
<string> Hôte auquel le client doit se connecter.connectListener
<Function> Paramètre commun des méthodessocket.connect()
. Sera ajouté en tant que listener pour l'événement'connect'
une seule fois.- Retourne : <net.Socket> Le socket lui-même.
Initie une connexion TCP sur le socket donné.
Alias de socket.connect(options[, connectListener])
appelé avec {port: port, host: host}
comme options
.
socket.connecting
Ajouté dans : v6.1.0
Si true
, socket.connect(options[, connectListener])
a été appelé et n'est pas encore terminé. Il restera true
jusqu'à ce que le socket soit connecté, puis il sera défini sur false
et l'événement 'connect'
sera émis. Notez que le rappel socket.connect(options[, connectListener])
est un listener pour l'événement 'connect'
.
socket.destroy([error])
Ajouté dans : v0.1.90
error
<Object>- Retourne : <net.Socket>
S'assure qu'il n'y a plus d'activité d'E/S sur ce socket. Détruit le flux et ferme la connexion.
Voir writable.destroy()
pour plus de détails.
socket.destroyed
- <boolean> Indique si la connexion est détruite ou non. Une fois qu'une connexion est détruite, plus aucune donnée ne peut être transférée en l'utilisant.
Voir writable.destroyed
pour plus de détails.
socket.destroySoon()
Ajouté dans : v0.3.4
Détruit le socket après que toutes les données ont été écrites. Si l'événement 'finish'
a déjà été émis, le socket est détruit immédiatement. Si le socket est toujours inscriptible, il appelle implicitement socket.end()
.
socket.end([data[, encoding]][, callback])
Ajouté dans : v0.1.90
data
<string> | <Buffer> | <Uint8Array>encoding
<string> Utilisé uniquement lorsque data eststring
. Par défaut :'utf8'
.callback
<Function> Rappel optionnel lorsque le socket est terminé.- Retourne : <net.Socket> Le socket lui-même.
Ferme le socket à moitié. C'est-à-dire qu'il envoie un paquet FIN. Il est possible que le serveur envoie encore des données.
Voir writable.end()
pour plus de détails.
socket.localAddress
Ajouté dans : v0.9.6
La représentation sous forme de chaîne de l'adresse IP locale sur laquelle le client distant se connecte. Par exemple, dans un serveur écoutant sur '0.0.0.0'
, si un client se connecte sur '192.168.1.1'
, la valeur de socket.localAddress
serait '192.168.1.1'
.
socket.localPort
Ajouté dans : v0.9.6
La représentation numérique du port local. Par exemple, 80
ou 21
.
socket.localFamily
Ajouté dans : v18.8.0, v16.18.0
La représentation sous forme de chaîne de la famille d'adresses IP locales. 'IPv4'
ou 'IPv6'
.
socket.pause()
- Retourne : <net.Socket> Le socket lui-même.
Interrompt la lecture des données. Autrement dit, les événements 'data'
ne seront pas émis. Utile pour ralentir un téléversement.
socket.pending
Ajouté dans : v11.2.0, v10.16.0
Cette valeur est true
si le socket n'est pas encore connecté, soit parce que .connect()
n'a pas encore été appelé, soit parce qu'il est toujours en cours de connexion (voir socket.connecting
).
socket.ref()
Ajouté dans : v0.9.1
- Retourne : <net.Socket> Le socket lui-même.
Contraire de unref()
, l'appel de ref()
sur un socket précédemment unref
ne permettra pas au programme de se terminer si c'est le seul socket restant (le comportement par défaut). Si le socket est ref
, l'appel de ref
à nouveau n'aura aucun effet.
socket.remoteAddress
Ajouté dans : v0.5.10
La représentation sous forme de chaîne de l'adresse IP distante. Par exemple, '74.125.127.100'
ou '2001:4860:a005::68'
. La valeur peut être undefined
si le socket est détruit (par exemple, si le client s'est déconnecté).
socket.remoteFamily
Ajouté dans : v0.11.14
La représentation sous forme de chaîne de la famille d'adresses IP distantes. 'IPv4'
ou 'IPv6'
. La valeur peut être undefined
si le socket est détruit (par exemple, si le client s'est déconnecté).
socket.remotePort
Ajouté dans : v0.5.10
La représentation numérique du port distant. Par exemple, 80
ou 21
. La valeur peut être undefined
si le socket est détruit (par exemple, si le client s'est déconnecté).
socket.resetAndDestroy()
Ajouté dans : v18.3.0, v16.17.0
- Retourne : <net.Socket>
Ferme la connexion TCP en envoyant un paquet RST et détruit le flux. Si ce socket TCP est en état de connexion, il enverra un paquet RST et détruira ce socket TCP une fois qu'il sera connecté. Sinon, il appellera socket.destroy
avec une erreur ERR_SOCKET_CLOSED
. S'il ne s'agit pas d'un socket TCP (par exemple, un pipe), l'appel de cette méthode lèvera immédiatement une erreur ERR_INVALID_HANDLE_TYPE
.
socket.resume()
- Retourne : <net.Socket> Le socket lui-même.
Reprend la lecture après un appel à socket.pause()
.
socket.setEncoding([encoding])
Ajouté dans : v0.1.90
encoding
<string>- Retourne : <net.Socket> Le socket lui-même.
Définit l'encodage du socket en tant que Flux Lisible. Voir readable.setEncoding()
pour plus d'informations.
socket.setKeepAlive([enable][, initialDelay])
[Historique]
Version | Modifications |
---|---|
v13.12.0, v12.17.0 | De nouvelles valeurs par défaut pour les options de socket TCP_KEEPCNT et TCP_KEEPINTVL ont été ajoutées. |
v0.1.92 | Ajouté dans : v0.1.92 |
enable
<boolean> Par défaut :false
initialDelay
<number> Par défaut :0
- Retourne : <net.Socket> Le socket lui-même.
Active/désactive la fonctionnalité keep-alive, et définit éventuellement le délai initial avant l'envoi de la première sonde keepalive sur un socket inactif.
Définissez initialDelay
(en millisecondes) pour définir le délai entre le dernier paquet de données reçu et la première sonde keepalive. Définir 0
pour initialDelay
laissera la valeur inchangée par rapport au paramètre par défaut (ou précédent).
L'activation de la fonctionnalité keep-alive définira les options de socket suivantes :
SO_KEEPALIVE=1
TCP_KEEPIDLE=initialDelay
TCP_KEEPCNT=10
TCP_KEEPINTVL=1
socket.setNoDelay([noDelay])
Ajouté dans : v0.1.90
noDelay
<boolean> Par défaut :true
- Retourne : <net.Socket> Le socket lui-même.
Active/désactive l'utilisation de l'algorithme de Nagle.
Lorsqu'une connexion TCP est créée, l'algorithme de Nagle est activé.
L'algorithme de Nagle retarde les données avant qu'elles ne soient envoyées via le réseau. Il tente d'optimiser le débit au détriment de la latence.
Passer true
pour noDelay
ou ne pas passer d'argument désactivera l'algorithme de Nagle pour le socket. Passer false
pour noDelay
activera l'algorithme de Nagle.
socket.setTimeout(timeout[, callback])
[Historique]
Version | Modifications |
---|---|
v18.0.0 | Le fait de passer un rappel invalide à l'argument callback génère maintenant ERR_INVALID_ARG_TYPE au lieu de ERR_INVALID_CALLBACK . |
v0.1.90 | Ajouté dans : v0.1.90 |
timeout
<number>callback
<Function>- Retourne : <net.Socket> Le socket lui-même.
Définit le socket pour qu'il expire après timeout
millisecondes d'inactivité sur le socket. Par défaut, net.Socket
n'a pas de délai d'attente.
Lorsqu'un délai d'inactivité est déclenché, le socket recevra un événement 'timeout'
mais la connexion ne sera pas interrompue. L'utilisateur doit appeler manuellement socket.end()
ou socket.destroy()
pour mettre fin à la connexion.
socket.setTimeout(3000)
socket.on('timeout', () => {
console.log('socket timeout')
socket.end()
})
Si timeout
est 0, le délai d'attente d'inactivité existant est désactivé.
Le paramètre facultatif callback
sera ajouté en tant qu'écouteur unique pour l'événement 'timeout'
.
socket.timeout
Ajouté dans : v10.7.0
Le délai d'attente du socket en millisecondes tel que défini par socket.setTimeout()
. Il est undefined
si aucun délai d'attente n'a été défini.
socket.unref()
Ajouté dans : v0.9.1
- Retourne : <net.Socket> Le socket lui-même.
Appeler unref()
sur un socket permettra au programme de se terminer si c'est le seul socket actif dans le système d'événements. Si le socket est déjà unref
é, appeler unref()
à nouveau n'aura aucun effet.
socket.write(data[, encoding][, callback])
Ajouté dans : v0.1.90
data
<string> | <Buffer> | <Uint8Array>encoding
<string> Utilisé uniquement lorsque les données sont de typestring
. Par défaut :utf8
.callback
<Function>- Retourne : <boolean>
Envoie des données sur le socket. Le deuxième paramètre spécifie l'encodage dans le cas d'une chaîne de caractères. La valeur par défaut est l'encodage UTF8.
Retourne true
si toutes les données ont été vidées avec succès dans le tampon du noyau. Retourne false
si toutes ou une partie des données ont été mises en file d'attente dans la mémoire utilisateur. L'événement 'drain'
sera émis lorsque le tampon sera à nouveau libre.
Le paramètre callback
facultatif sera exécuté lorsque les données seront finalement écrites, ce qui peut ne pas être immédiat.
Voir la méthode write()
du flux Writable
pour plus d'informations.
socket.readyState
Ajouté dans : v0.5.0
Cette propriété représente l'état de la connexion sous forme de chaîne de caractères.
- Si le flux est en cours de connexion,
socket.readyState
estopening
. - Si le flux est lisible et accessible en écriture, il est
open
. - Si le flux est lisible et non accessible en écriture, il est
readOnly
. - Si le flux n'est pas lisible et est accessible en écriture, il est
writeOnly
.
net.connect()
Alias de net.createConnection()
.
Signatures possibles :
net.connect(options[, connectListener])
net.connect(path[, connectListener])
pour les connexions IPC.net.connect(port[, host][, connectListener])
pour les connexions TCP.
net.connect(options[, connectListener])
Ajouté dans : v0.7.0
options
<Object>connectListener
<Function>- Retourne : <net.Socket>
Alias de net.createConnection(options[, connectListener])
.
net.connect(path[, connectListener])
Ajouté dans : v0.1.90
path
<string>connectListener
<Function>- Retourne : <net.Socket>
Alias de net.createConnection(path[, connectListener])
.
net.connect(port[, host][, connectListener])
Ajouté dans : v0.1.90
port
<number>host
<string>connectListener
<Function>- Retourne : <net.Socket>
Alias de net.createConnection(port[, host][, connectListener])
.
net.createConnection()
Une fonction usine, qui crée un nouveau net.Socket
, initie immédiatement la connexion avec socket.connect()
, puis renvoie le net.Socket
qui démarre la connexion.
Lorsque la connexion est établie, un événement 'connect'
est émis sur le socket renvoyé. Le dernier paramètre connectListener
, s'il est fourni, sera ajouté comme écouteur pour l'événement 'connect'
une seule fois.
Signatures possibles :
net.createConnection(options[, connectListener])
net.createConnection(path[, connectListener])
pour les connexions IPC.net.createConnection(port[, host][, connectListener])
pour les connexions TCP.
La fonction net.connect()
est un alias de cette fonction.
net.createConnection(options[, connectListener])
Ajouté dans : v0.1.90
options
<Object> Requis. Sera transmis à la fois à l'appelnew net.Socket([options])
et à la méthodesocket.connect(options[, connectListener])
.connectListener
<Function> Paramètre commun des fonctionsnet.createConnection()
. S'il est fourni, sera ajouté comme écouteur pour l'événement'connect'
sur le socket renvoyé une seule fois.- Renvoie : <net.Socket> Le socket nouvellement créé utilisé pour démarrer la connexion.
Pour les options disponibles, consultez new net.Socket([options])
et socket.connect(options[, connectListener])
.
Options supplémentaires :
timeout
<number> Si défini, sera utilisé pour appelersocket.setTimeout(timeout)
après la création du socket, mais avant qu'il ne démarre la connexion.
Voici un exemple de client du serveur d'écho décrit dans la section net.createServer()
:
import net from 'node:net'
const client = net.createConnection({ port: 8124 }, () => {
// Écouteur 'connect'.
console.log('connecté au serveur !')
client.write('monde !\r\n')
})
client.on('data', data => {
console.log(data.toString())
client.end()
})
client.on('end', () => {
console.log('déconnecté du serveur')
})
const net = require('node:net')
const client = net.createConnection({ port: 8124 }, () => {
// Écouteur 'connect'.
console.log('connecté au serveur !')
client.write('monde !\r\n')
})
client.on('data', data => {
console.log(data.toString())
client.end()
})
client.on('end', () => {
console.log('déconnecté du serveur')
})
Pour se connecter sur le socket /tmp/echo.sock
:
const client = net.createConnection({ path: '/tmp/echo.sock' })
Voici un exemple de client utilisant l'option port
et onread
. Dans ce cas, l'option onread
ne sera utilisée que pour appeler new net.Socket([options])
et l'option port
sera utilisée pour appeler socket.connect(options[, connectListener])
.
import net from 'node:net'
import { Buffer } from 'node:buffer'
net.createConnection({
port: 8124,
onread: {
// Réutilise un Buffer de 4 kio pour chaque lecture du socket.
buffer: Buffer.alloc(4 * 1024),
callback: function (nread, buf) {
// Les données reçues sont disponibles dans `buf` de 0 à `nread`.
console.log(buf.toString('utf8', 0, nread))
},
},
})
const net = require('node:net')
net.createConnection({
port: 8124,
onread: {
// Réutilise un Buffer de 4 kio pour chaque lecture du socket.
buffer: Buffer.alloc(4 * 1024),
callback: function (nread, buf) {
// Les données reçues sont disponibles dans `buf` de 0 à `nread`.
console.log(buf.toString('utf8', 0, nread))
},
},
})
net.createConnection(path[, connectListener])
Ajouté dans : v0.1.90
path
<string> Chemin auquel le socket doit se connecter. Sera passé àsocket.connect(path[, connectListener])
. Voir Identification des chemins pour les connexions IPC.connectListener
<Function> Paramètre commun des fonctionsnet.createConnection()
, un écouteur "once" pour l'événement'connect'
sur le socket d'initialisation. Sera passé àsocket.connect(path[, connectListener])
.- Retourne : <net.Socket> Le socket nouvellement créé utilisé pour démarrer la connexion.
Initie une connexion IPC.
Cette fonction crée un nouveau net.Socket
avec toutes les options définies par défaut, initie immédiatement la connexion avec socket.connect(path[, connectListener])
, puis retourne le net.Socket
qui démarre la connexion.
net.createConnection(port[, host][, connectListener])
Ajouté dans : v0.1.90
port
<number> Port auquel le socket doit se connecter. Sera passé àsocket.connect(port[, host][, connectListener])
.host
<string> Hôte auquel le socket doit se connecter. Sera passé àsocket.connect(port[, host][, connectListener])
. Par défaut :'localhost'
.connectListener
<Function> Paramètre commun des fonctionsnet.createConnection()
, un écouteur "once" pour l'événement'connect'
sur le socket d'initialisation. Sera passé àsocket.connect(port[, host][, connectListener])
.- Retourne : <net.Socket> Le socket nouvellement créé utilisé pour démarrer la connexion.
Initie une connexion TCP.
Cette fonction crée un nouveau net.Socket
avec toutes les options définies par défaut, initie immédiatement la connexion avec socket.connect(port[, host][, connectListener])
, puis retourne le net.Socket
qui démarre la connexion.
net.createServer([options][, connectionListener])
[Historique]
Version | Modifications |
---|---|
v20.1.0, v18.17.0 | L'option highWaterMark est désormais prise en charge. |
v17.7.0, v16.15.0 | Les options noDelay , keepAlive et keepAliveInitialDelay sont désormais prises en charge. |
v0.5.0 | Ajoutée dans : v0.5.0 |
options
<Object>allowHalfOpen
<boolean> Si la valeur estfalse
, le socket terminera automatiquement le côté inscriptible lorsque le côté lisible se terminera. Par défaut:false
.highWaterMark
<number> Remplace éventuellement tous lesreadableHighWaterMark
etwritableHighWaterMark
denet.Socket
. Par défaut : Voirstream.getDefaultHighWaterMark()
.keepAlive
<boolean> Si la valeur esttrue
, elle active la fonctionnalité keep-alive sur le socket immédiatement après la réception d'une nouvelle connexion entrante, de la même manière que ce qui est fait danssocket.setKeepAlive()
. Par défaut:false
.keepAliveInitialDelay
<number> Si elle est définie sur un nombre positif, elle définit le délai initial avant l'envoi de la première sonde keepalive sur un socket inactif. Par défaut:0
.noDelay
<boolean> Si la valeur esttrue
, elle désactive l'utilisation de l'algorithme de Nagle immédiatement après la réception d'une nouvelle connexion entrante. Par défaut:false
.pauseOnConnect
<boolean> Indique si le socket doit être mis en pause lors des connexions entrantes. Par défaut:false
.blockList
<net.BlockList>blockList
peut être utilisé pour désactiver l'accès entrant à des adresses IP, des plages d'adresses IP ou des sous-réseaux IP spécifiques. Cela ne fonctionne pas si le serveur se trouve derrière un proxy inverse, un NAT, etc., car l'adresse vérifiée par rapport à la liste de blocage est l'adresse du proxy ou celle spécifiée par le NAT.
connectionListener
<Function> Définie automatiquement comme écouteur de l'événement'connection'
.Renvoie : <net.Server>
Crée un nouveau serveur TCP ou IPC.
Si allowHalfOpen
est défini sur true
, lorsque l'autre extrémité du socket signale la fin de la transmission, le serveur ne renvoie la fin de la transmission que lorsque socket.end()
est explicitement appelée. Par exemple, dans le contexte de TCP, lorsqu'un paquet FIN est reçu, un paquet FIN n'est renvoyé que lorsque socket.end()
est explicitement appelé. Jusque-là, la connexion est à moitié fermée (non lisible mais toujours inscriptible). Voir l'événement 'end'
et le RFC 1122 (section 4.2.2.13) pour plus d'informations.
Si pauseOnConnect
est défini sur true
, le socket associé à chaque connexion entrante sera mis en pause et aucune donnée ne sera lue à partir de son descripteur. Cela permet de passer des connexions entre les processus sans qu'aucune donnée ne soit lue par le processus d'origine. Pour commencer à lire les données d'un socket mis en pause, appelez socket.resume()
.
Le serveur peut être un serveur TCP ou un serveur IPC, selon ce qu'il listen()
.
Voici un exemple de serveur d'écho TCP qui écoute les connexions sur le port 8124 :
import net from 'node:net'
const server = net.createServer(c => {
// Listener 'connection'.
console.log('client connecté')
c.on('end', () => {
console.log('client déconnecté')
})
c.write('hello\r\n')
c.pipe(c)
})
server.on('error', err => {
throw err
})
server.listen(8124, () => {
console.log('serveur lié')
})
const net = require('node:net')
const server = net.createServer(c => {
// Listener 'connection'.
console.log('client connecté')
c.on('end', () => {
console.log('client déconnecté')
})
c.write('hello\r\n')
c.pipe(c)
})
server.on('error', err => {
throw err
})
server.listen(8124, () => {
console.log('serveur lié')
})
Testez cela en utilisant telnet
:
telnet localhost 8124
Pour écouter sur le socket /tmp/echo.sock
:
server.listen('/tmp/echo.sock', () => {
console.log('serveur lié')
})
Utilisez nc
pour vous connecter à un serveur de socket de domaine Unix :
nc -U /tmp/echo.sock
net.getDefaultAutoSelectFamily()
Ajouté dans : v19.4.0
Récupère la valeur par défaut actuelle de l'option autoSelectFamily
de socket.connect(options)
. La valeur par défaut initiale est true
, sauf si l'option de ligne de commande --no-network-family-autoselection
est fournie.
- Retourne : <boolean> La valeur par défaut actuelle de l'option
autoSelectFamily
.
net.setDefaultAutoSelectFamily(value)
Ajouté dans : v19.4.0
Définit la valeur par défaut de l'option autoSelectFamily
de socket.connect(options)
.
value
<boolean> La nouvelle valeur par défaut. La valeur par défaut initiale esttrue
, sauf si l'option de ligne de commande--no-network-family-autoselection
est fournie.
net.getDefaultAutoSelectFamilyAttemptTimeout()
Ajouté dans : v19.8.0, v18.18.0
Récupère la valeur par défaut actuelle de l'option autoSelectFamilyAttemptTimeout
de socket.connect(options)
. La valeur par défaut initiale est 250
ou la valeur spécifiée via l'option de ligne de commande --network-family-autoselection-attempt-timeout
.
- Retourne : <number> La valeur par défaut actuelle de l'option
autoSelectFamilyAttemptTimeout
.
net.setDefaultAutoSelectFamilyAttemptTimeout(value)
Ajouté dans : v19.8.0, v18.18.0
Définit la valeur par défaut de l'option autoSelectFamilyAttemptTimeout
de socket.connect(options)
.
value
<number> La nouvelle valeur par défaut, qui doit être un nombre positif. Si le nombre est inférieur à10
, la valeur10
est utilisée à la place. La valeur par défaut initiale est250
ou la valeur spécifiée via l'option de ligne de commande--network-family-autoselection-attempt-timeout
.
net.isIP(input)
Ajouté dans : v0.3.0
Renvoie 6
si input
est une adresse IPv6. Renvoie 4
si input
est une adresse IPv4 en notation décimale pointée sans zéros non significatifs. Sinon, renvoie 0
.
net.isIP('::1') // renvoie 6
net.isIP('127.0.0.1') // renvoie 4
net.isIP('127.000.000.001') // renvoie 0
net.isIP('127.0.0.1/24') // renvoie 0
net.isIP('fhqwhgads') // renvoie 0
net.isIPv4(input)
Ajouté dans : v0.3.0
Renvoie true
si input
est une adresse IPv4 en notation décimale pointée sans zéros non significatifs. Sinon, renvoie false
.
net.isIPv4('127.0.0.1') // renvoie true
net.isIPv4('127.000.000.001') // renvoie false
net.isIPv4('127.0.0.1/24') // renvoie false
net.isIPv4('fhqwhgads') // renvoie false
net.isIPv6(input)
Ajouté dans : v0.3.0
Renvoie true
si input
est une adresse IPv6. Sinon, renvoie false
.
net.isIPv6('::1') // renvoie true
net.isIPv6('fhqwhgads') // renvoie false