Net
[Stabil: 2 - Stabil]
Stabil: 2 Stabilität: 2 - Stabil
Quellcode: lib/net.js
Das Modul node:net
bietet eine asynchrone Netzwerk-API zum Erstellen von stream-basierten TCP- oder IPC-Servern (net.createServer()
) und -Clients (net.createConnection()
).
Es kann wie folgt zugegriffen werden:
import net from 'node:net'
const net = require('node:net')
IPC-Unterstützung
[Verlauf]
Version | Änderungen |
---|---|
v20.8.0 | Unterstützung der Bindung an abstrakte Unix-Domain-Socket-Pfade wie \0abstract . Wir können \0 für Node.js < v20.4.0 binden. |
Das Modul node:net
unterstützt IPC mit Named Pipes unter Windows und Unix-Domain-Sockets unter anderen Betriebssystemen.
Identifizieren von Pfaden für IPC-Verbindungen
net.connect()
, net.createConnection()
, server.listen()
und socket.connect()
verwenden einen path
-Parameter, um IPC-Endpunkte zu identifizieren.
Unter Unix wird die lokale Domäne auch als Unix-Domäne bezeichnet. Der Pfad ist ein Dateisystempfadname. Es wird ein Fehler ausgegeben, wenn die Länge des Pfadnamens größer als die Länge von sizeof(sockaddr_un.sun_path)
ist. Typische Werte sind 107 Byte unter Linux und 103 Byte unter macOS. Wenn eine Node.js-API-Abstraktion den Unix-Domain-Socket erstellt, wird der Unix-Domain-Socket auch aufgehoben. Beispielsweise kann net.createServer()
einen Unix-Domain-Socket erstellen und server.close()
wird ihn aufheben. Wenn ein Benutzer den Unix-Domain-Socket jedoch außerhalb dieser Abstraktionen erstellt, muss der Benutzer ihn entfernen. Gleiches gilt, wenn eine Node.js-API einen Unix-Domain-Socket erstellt, das Programm aber dann abstürzt. Kurz gesagt, ein Unix-Domain-Socket ist im Dateisystem sichtbar und bleibt bestehen, bis er aufgehoben wird. Unter Linux können Sie einen abstrakten Unix-Socket verwenden, indem Sie dem Pfad \0
am Anfang hinzufügen, z. B. \0abstract
. Der Pfad zum abstrakten Unix-Socket ist im Dateisystem nicht sichtbar und verschwindet automatisch, wenn alle offenen Referenzen zum Socket geschlossen werden.
Unter Windows wird die lokale Domäne mithilfe einer Named Pipe implementiert. Der Pfad muss sich auf einen Eintrag in \\?\pipe\
oder \\.\pipe\
beziehen. Alle Zeichen sind zulässig, aber letzteres kann einige Verarbeitungen von Pipenames durchführen, z. B. das Auflösen von ..
-Sequenzen. Unabhängig davon, wie es aussehen mag, ist der Pipe-Namespace flach. Pipes bestehen nicht fort. Sie werden entfernt, wenn die letzte Referenz auf sie geschlossen wird. Im Gegensatz zu Unix-Domain-Sockets schließt und entfernt Windows die Pipe, wenn der Besitzerprozess beendet wird.
Für die JavaScript-Zeichenfolgen-Escape-Funktion müssen Pfade mit zusätzlicher Backslash-Escape-Funktion angegeben werden, z. B.:
net.createServer().listen(path.join('\\\\?\\pipe', process.cwd(), 'myctl'))
Klasse: net.BlockList
Hinzugefügt in: v15.0.0, v14.18.0
Das BlockList
-Objekt kann mit einigen Netzwerk-APIs verwendet werden, um Regeln zum Deaktivieren des ein- oder ausgehenden Zugriffs auf bestimmte IP-Adressen, IP-Bereiche oder IP-Subnetze anzugeben.
blockList.addAddress(address[, type])
Hinzugefügt in: v15.0.0, v14.18.0
address
<string> | <net.SocketAddress> Eine IPv4- oder IPv6-Adresse.type
<string> Entweder'ipv4'
oder'ipv6'
. Standard:'ipv4'
.
Fügt eine Regel hinzu, um die angegebene IP-Adresse zu blockieren.
blockList.addRange(start, end[, type])
Hinzugefügt in: v15.0.0, v14.18.0
start
<string> | <net.SocketAddress> Die Start-IPv4- oder IPv6-Adresse im Bereich.end
<string> | <net.SocketAddress> Die End-IPv4- oder IPv6-Adresse im Bereich.type
<string> Entweder'ipv4'
oder'ipv6'
. Standard:'ipv4'
.
Fügt eine Regel hinzu, um einen Bereich von IP-Adressen von start
(inklusive) bis end
(inklusive) zu blockieren.
blockList.addSubnet(net, prefix[, type])
Hinzugefügt in: v15.0.0, v14.18.0
net
<string> | <net.SocketAddress> Die Netzwerk-IPv4- oder IPv6-Adresse.prefix
<number> Die Anzahl der CIDR-Präfixbits. Für IPv4 muss dies ein Wert zwischen0
und32
sein. Für IPv6 muss dies zwischen0
und128
liegen.type
<string> Entweder'ipv4'
oder'ipv6'
. Standard:'ipv4'
.
Fügt eine Regel hinzu, um einen Bereich von IP-Adressen zu blockieren, der als Subnetzmaske angegeben ist.
blockList.check(address[, type])
Hinzugefügt in: v15.0.0, v14.18.0
address
<string> | <net.SocketAddress> Die zu überprüfende IP-Adressetype
<string> Entweder'ipv4'
oder'ipv6'
. Standardwert:'ipv4'
.- Rückgabewert: <boolean>
Gibt true
zurück, wenn die angegebene IP-Adresse mit einer der dem BlockList
hinzugefügten Regeln übereinstimmt.
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')) // Gibt aus: true
console.log(blockList.check('10.0.0.3')) // Gibt aus: true
console.log(blockList.check('222.111.111.222')) // Gibt aus: false
// IPv6-Notation für IPv4-Adressen funktioniert:
console.log(blockList.check('::ffff:7b7b:7b7b', 'ipv6')) // Gibt aus: true
console.log(blockList.check('::ffff:123.123.123.123', 'ipv6')) // Gibt aus: true
blockList.rules
Hinzugefügt in: v15.0.0, v14.18.0
- Typ: <string[]>
Die Liste der der Blockliste hinzugefügten Regeln.
BlockList.isBlockList(value)
Hinzugefügt in: v23.4.0
value
<any> Ein beliebiger JS-Wert- Gibt
true
zurück, wenn dervalue
einnet.BlockList
ist.
Klasse: net.SocketAddress
Hinzugefügt in: v15.14.0, v14.18.0
new net.SocketAddress([options])
Hinzugefügt in: v15.14.0, v14.18.0
options
<Object>address
<string> Die Netzwerkadresse als IPv4- oder IPv6-Zeichenkette. Standardwert:'127.0.0.1'
, wennfamily
'ipv4'
ist;'::'
, wennfamily
'ipv6'
ist.family
<string> Einer von'ipv4'
oder'ipv6'
. Standardwert:'ipv4'
.flowlabel
<number> Ein IPv6-Flow-Label, das nur verwendet wird, wennfamily
'ipv6'
ist.port
<number> Ein IP-Port.
socketaddress.address
Hinzugefügt in: v15.14.0, v14.18.0
- Typ <string>
socketaddress.family
Hinzugefügt in: v15.14.0, v14.18.0
- Typ <string> Entweder
'ipv4'
oder'ipv6'
.
socketaddress.flowlabel
Hinzugefügt in: v15.14.0, v14.18.0
- Typ <number>
socketaddress.port
Hinzugefügt in: v15.14.0, v14.18.0
- Typ <number>
SocketAddress.parse(input)
Hinzugefügt in: v23.4.0
input
<string> Eine Eingabezeichenkette, die eine IP-Adresse und einen optionalen Port enthält, z. B.123.1.2.3:1234
oder[1::1]:1234
.- Gibt zurück: <net.SocketAddress> Gibt ein
SocketAddress
zurück, wenn das Parsen erfolgreich war. Andernfalls wirdundefined
zurückgegeben.
Klasse: net.Server
Hinzugefügt in: v0.1.90
- Erweitert: <EventEmitter>
Diese Klasse wird verwendet, um einen TCP- oder IPC-Server zu erstellen.
new net.Server([options][, connectionListener])
options
<Object> Siehenet.createServer([options][, connectionListener])
.connectionListener
<Function> Automatisch als Listener für das'connection'
-Ereignis gesetzt.- Gibt zurück: <net.Server>
net.Server
ist ein EventEmitter
mit den folgenden Ereignissen:
Ereignis: 'close'
Hinzugefügt in: v0.5.0
Wird ausgegeben, wenn der Server geschlossen wird. Wenn Verbindungen bestehen, wird dieses Ereignis erst ausgegeben, nachdem alle Verbindungen beendet wurden.
Ereignis: 'connection'
Hinzugefügt in: v0.1.90
- <net.Socket> Das Verbindungsobjekt
Wird ausgelöst, wenn eine neue Verbindung hergestellt wird. socket
ist eine Instanz von net.Socket
.
Ereignis: 'error'
Hinzugefügt in: v0.1.90
Wird ausgelöst, wenn ein Fehler auftritt. Im Gegensatz zu net.Socket
wird das Ereignis 'close'
nicht direkt nach diesem Ereignis ausgelöst, es sei denn, server.close()
wird manuell aufgerufen. Siehe das Beispiel in der Diskussion von server.listen()
.
Ereignis: 'listening'
Hinzugefügt in: v0.1.90
Wird ausgelöst, wenn der Server nach dem Aufruf von server.listen()
gebunden wurde.
Ereignis: 'drop'
Hinzugefügt in: v18.6.0, v16.17.0
Wenn die Anzahl der Verbindungen den Schwellenwert von server.maxConnections
erreicht, verwirft der Server neue Verbindungen und löst stattdessen das Ereignis 'drop'
aus. Handelt es sich um einen TCP-Server, lautet das Argument wie folgt, andernfalls ist das Argument undefined
.
data
<Object> Das an den Ereignislistener übergebene Argument.
server.address()
[Verlauf]
Version | Änderungen |
---|---|
v18.4.0 | Die Eigenschaft family gibt jetzt einen String anstelle einer Zahl zurück. |
v18.0.0 | Die Eigenschaft family gibt jetzt eine Zahl anstelle eines Strings zurück. |
v0.1.90 | Hinzugefügt in: v0.1.90 |
Gibt die gebundene address
, den family
-Namen der Adresse und den port
des Servers zurück, wie vom Betriebssystem gemeldet, wenn auf einem IP-Socket zugehört wird (nützlich, um herauszufinden, welcher Port zugewiesen wurde, wenn eine vom Betriebssystem zugewiesene Adresse verwendet wird): { port: 12346, family: 'IPv4', address: '127.0.0.1' }
.
Für einen Server, der auf einer Pipe oder einem Unix-Domain-Socket lauscht, wird der Name als String zurückgegeben.
const server = net
.createServer(socket => {
socket.end('goodbye\n')
})
.on('error', err => {
// Fehler hier behandeln.
throw err
})
// Einen beliebigen ungenutzten Port belegen.
server.listen(() => {
console.log('Server geöffnet auf', server.address())
})
server.address()
gibt null
zurück, bevor das Ereignis 'listening'
ausgelöst wurde oder nachdem server.close()
aufgerufen wurde.
server.close([callback])
Hinzugefügt in: v0.1.90
callback
<Function> Wird aufgerufen, wenn der Server geschlossen wird.- Rückgabewert: <net.Server>
Verhindert, dass der Server neue Verbindungen akzeptiert und behält bestehende Verbindungen bei. Diese Funktion ist asynchron; der Server wird endgültig geschlossen, wenn alle Verbindungen beendet sind und der Server ein 'close'
-Ereignis auslöst. Der optionale callback
wird aufgerufen, sobald das Ereignis 'close'
eintritt. Im Gegensatz zu diesem Ereignis wird er mit einem Error
als einziges Argument aufgerufen, wenn der Server beim Schließen nicht geöffnet war.
server[Symbol.asyncDispose]()
Hinzugefügt in: v20.5.0, v18.18.0
[Stabil: 1 - Experimentell]
Stabil: 1 Stabilität: 1 - Experimentell
Ruft server.close()
auf und gibt ein Promise zurück, das erfüllt wird, wenn der Server geschlossen wurde.
server.getConnections(callback)
Hinzugefügt in: v0.9.7
callback
<Function>- Gibt zurück: <net.Server>
Ruft asynchron die Anzahl der gleichzeitigen Verbindungen auf dem Server ab. Funktioniert, wenn Sockets an Forks gesendet wurden.
Der Callback sollte zwei Argumente err
und count
entgegennehmen.
server.listen()
Startet einen Server, der auf Verbindungen lauscht. Ein net.Server
kann je nachdem, worauf er lauscht, ein TCP- oder ein IPC-Server sein.
Mögliche Signaturen:
server.listen(handle[, backlog][, callback])
server.listen(options[, callback])
server.listen(path[, backlog][, callback])
für IPC-Serverserver.listen([port[, host[, backlog]]][, callback])
für TCP-Server
Diese Funktion ist asynchron. Wenn der Server mit dem Lauschen beginnt, wird das Ereignis 'listening'
emittiert. Der letzte Parameter callback
wird als Listener für das Ereignis 'listening'
hinzugefügt.
Alle listen()
-Methoden können einen backlog
-Parameter verwenden, um die maximale Länge der Warteschlange ausstehender Verbindungen anzugeben. Die tatsächliche Länge wird vom Betriebssystem über Sysctl-Einstellungen wie tcp_max_syn_backlog
und somaxconn
unter Linux bestimmt. Der Standardwert dieses Parameters ist 511 (nicht 512).
Alle net.Socket
werden auf SO_REUSEADDR
gesetzt (siehe socket(7)
für Details).
Die Methode server.listen()
kann erneut aufgerufen werden, wenn und nur wenn während des ersten Aufrufs von server.listen()
ein Fehler aufgetreten ist oder server.close()
aufgerufen wurde. Andernfalls wird ein ERR_SERVER_ALREADY_LISTEN
-Fehler ausgelöst.
Einer der häufigsten Fehler beim Lauschen ist EADDRINUSE
. Dies geschieht, wenn bereits ein anderer Server auf dem angeforderten port
/path
/handle
lauscht. Eine Möglichkeit, dies zu behandeln, wäre ein erneuter Versuch nach einer bestimmten Zeit:
server.on('error', e => {
if (e.code === 'EADDRINUSE') {
console.error('Adresse bereits in Verwendung, erneuter Versuch...')
setTimeout(() => {
server.close()
server.listen(PORT, HOST)
}, 1000)
}
})
server.listen(handle[, backlog][, callback])
Hinzugefügt in: v0.5.10
handle
<Object>backlog
<number> Üblicher Parameter derserver.listen()
-Funktionencallback
<Function>- Gibt zurück: <net.Server>
Startet einen Server, der auf Verbindungen an einem gegebenen handle
lauscht, der bereits an einen Port, einen Unix-Domain-Socket oder eine Windows-Named Pipe gebunden wurde.
Das handle
-Objekt kann entweder ein Server, ein Socket (alles mit einem zugrundeliegenden _handle
-Member) oder ein Objekt mit einem fd
-Member sein, der ein gültiger File Descriptor ist.
Das Zuhören auf einem File Descriptor wird unter Windows nicht unterstützt.
server.listen(options[, callback])
[Verlauf]
Version | Änderungen |
---|---|
v23.1.0 | Die Option reusePort wird unterstützt. |
v15.6.0 | Unterstützung für AbortSignal wurde hinzugefügt. |
v11.4.0 | Die Option ipv6Only wird unterstützt. |
v0.11.14 | Hinzugefügt in: v0.11.14 |
options
<Object> Erforderlich. Unterstützt die folgenden Eigenschaften:backlog
<number> Üblicher Parameter derserver.listen()
-Funktionen.exclusive
<boolean> Standard:false
host
<string>ipv6Only
<boolean> Für TCP-Server deaktiviert die Einstellung vonipv6Only
auftrue
die Dual-Stack-Unterstützung, d. h. die Bindung an Host::
bewirkt nicht, dass0.0.0.0
gebunden wird. Standard:false
.reusePort
<boolean> Für TCP-Server ermöglicht die Einstellung vonreusePort
auftrue
mehreren Sockets auf demselben Host, an denselben Port zu binden. Eingehende Verbindungen werden vom Betriebssystem an die lauschenden Sockets verteilt. Diese Option ist nur auf einigen Plattformen verfügbar, wie z. B. Linux 3.9+, DragonFlyBSD 3.6+, FreeBSD 12.0+, Solaris 11.4 und AIX 7.2.5+. Standard:false
.path
<string> Wird ignoriert, wennport
angegeben ist. Siehe Identifizieren von Pfaden für IPC-Verbindungen.port
<number>readableAll
<boolean> Für IPC-Server macht die Pipe für alle Benutzer lesbar. Standard:false
.signal
<AbortSignal> Ein AbortSignal, das verwendet werden kann, um einen lauschenden Server zu schließen.writableAll
<boolean> Für IPC-Server macht die Pipe für alle Benutzer beschreibbar. Standard:false
.
callback
<Function> Funktionen.Gibt zurück: <net.Server>
Wenn port
angegeben ist, verhält es sich wie server.listen([port[, host[, backlog]]][, callback])
. Andernfalls, wenn path
angegeben ist, verhält es sich wie server.listen(path[, backlog][, callback])
. Wenn keiner von beiden angegeben ist, wird ein Fehler ausgelöst.
Wenn exclusive
false
ist (Standard), verwenden Cluster-Worker dasselbe zugrunde liegende Handle, wodurch die Aufgaben der Verbindungsbehandlung gemeinsam genutzt werden können. Wenn exclusive
true
ist, wird das Handle nicht gemeinsam genutzt, und der Versuch, den Port gemeinsam zu nutzen, führt zu einem Fehler. Ein Beispiel, das an einem exklusiven Port lauscht, ist unten gezeigt.
server.listen({
host: 'localhost',
port: 80,
exclusive: true,
})
Wenn exclusive
true
ist und das zugrunde liegende Handle gemeinsam genutzt wird, ist es möglich, dass mehrere Worker ein Handle mit unterschiedlichen Backlogs abfragen. In diesem Fall wird der erste an den Master-Prozess übergebene backlog
verwendet.
Das Starten eines IPC-Servers als Root kann dazu führen, dass der Serverpfad für nicht privilegierte Benutzer nicht zugänglich ist. Die Verwendung von readableAll
und writableAll
macht den Server für alle Benutzer zugänglich.
Wenn die Option signal
aktiviert ist, ist der Aufruf von .abort()
auf dem entsprechenden AbortController
ähnlich dem Aufruf von .close()
auf dem Server:
const controller = new AbortController()
server.listen({
host: 'localhost',
port: 80,
signal: controller.signal,
})
// Später, wenn Sie den Server schließen möchten.
controller.abort()
server.listen(path[, backlog][, callback])
Hinzugefügt in: v0.1.90
path
<string> Pfad, an dem der Server lauschen soll. Siehe Pfade für IPC-Verbindungen identifizieren.backlog
<number> Üblicher Parameter derserver.listen()
Funktionen.callback
<Function>.- Gibt zurück: <net.Server>
Startet einen IPC Server, der auf dem angegebenen path
auf Verbindungen lauscht.
server.listen([port[, host[, backlog]]][, callback])
Hinzugefügt in: v0.1.90
port
<number>host
<string>backlog
<number> Üblicher Parameter derserver.listen()
Funktionen.callback
<Function>.- Gibt zurück: <net.Server>
Startet einen TCP-Server, der auf dem angegebenen port
und host
auf Verbindungen lauscht.
Wenn port
ausgelassen oder 0 ist, weist das Betriebssystem einen beliebigen freien Port zu, der nach dem Auslösen des Ereignisses 'listening'
mit server.address().port
abgerufen werden kann.
Wenn host
ausgelassen wird, akzeptiert der Server Verbindungen an der unspecified IPv6 address (::
), wenn IPv6 verfügbar ist, oder an der unspecified IPv4 address (0.0.0.0
) andernfalls.
In den meisten Betriebssystemen kann das Lauschen an der unspecified IPv6 address (::
) dazu führen, dass der net.Server
auch an der unspecified IPv4 address (0.0.0.0
) lauscht.
server.listening
Hinzugefügt in: v5.7.0
- <boolean> Gibt an, ob der Server auf Verbindungen hört.
server.maxConnections
[Verlauf]
Version | Änderungen |
---|---|
v21.0.0 | Das Setzen von maxConnections auf 0 bricht alle eingehenden Verbindungen ab. Zuvor wurde es als Infinity interpretiert. |
v0.2.0 | Hinzugefügt in: v0.2.0 |
Wenn die Anzahl der Verbindungen den Schwellenwert server.maxConnections
erreicht:
Es wird nicht empfohlen, diese Option zu verwenden, sobald ein Socket mit child_process.fork()
an ein Child gesendet wurde.
server.dropMaxConnection
Hinzugefügt in: v23.1.0
Setzen Sie diese Eigenschaft auf true
, um mit dem Schließen von Verbindungen zu beginnen, sobald die Anzahl der Verbindungen den Schwellenwert [server.maxConnections
][] erreicht. Diese Einstellung ist nur im Cluster-Modus wirksam.
server.ref()
Hinzugefügt in: v0.9.1
- Rückgabewert: <net.Server>
Das Gegenteil von unref()
. Ein Aufruf von ref()
auf einem zuvor unref
ed Server lässt das Programm nicht beenden, wenn es der einzige verbleibende Server ist (das Standardverhalten). Wenn der Server referenziert (ref
ed) ist, hat ein erneuter Aufruf von ref()
keine Auswirkung.
server.unref()
Hinzugefügt in: v0.9.1
- Rückgabewert: <net.Server>
Ein Aufruf von unref()
auf einem Server erlaubt dem Programm, zu beenden, wenn dies der einzige aktive Server im Ereignissystem ist. Wenn der Server bereits unref
ed ist, hat ein erneuter Aufruf von unref()
keine Auswirkung.
Klasse: net.Socket
Hinzugefügt in: v0.3.4
- Erweitert: <stream.Duplex>
Diese Klasse ist eine Abstraktion eines TCP-Sockets oder eines streamenden IPC-Endpunkts (verwendet benannte Pipes unter Windows und Unix-Domain-Sockets andernfalls). Es ist auch ein EventEmitter
.
Ein net.Socket
kann vom Benutzer erstellt und direkt verwendet werden, um mit einem Server zu interagieren. Beispielsweise wird er von net.createConnection()
zurückgegeben, sodass der Benutzer ihn verwenden kann, um mit dem Server zu kommunizieren.
Er kann auch von Node.js erstellt und an den Benutzer übergeben werden, wenn eine Verbindung empfangen wird. Beispielsweise wird er an die Listener eines Ereignisses 'connection'
übergeben, das von einem net.Server
emittiert wird, sodass der Benutzer ihn verwenden kann, um mit dem Client zu interagieren.
new net.Socket([options])
[Historie]
Version | Änderungen |
---|---|
v15.14.0 | Unterstützung für AbortSignal hinzugefügt. |
v12.10.0 | onread -Option hinzugefügt. |
v0.3.4 | Hinzugefügt in: v0.3.4 |
options
<Object> Verfügbare Optionen sind:allowHalfOpen
<boolean> Wenn auffalse
gesetzt, beendet der Socket die beschreibbare Seite automatisch, wenn die lesbare Seite beendet wird. Siehenet.createServer()
und das Ereignis'end'
für Details. Standard:false
.fd
<number> Wenn angegeben, wird ein bestehender Socket mit dem gegebenen File Descriptor umschlossen, andernfalls wird ein neuer Socket erstellt.onread
<Object> Wenn angegeben, werden eingehende Daten in einem einzigenbuffer
gespeichert und an den angegebenencallback
übergeben, wenn Daten auf dem Socket ankommen. Dies führt dazu, dass die Streaming-Funktionalität keine Daten liefert. Der Socket sendet Ereignisse wie'error'
,'end'
und'close'
wie gewohnt aus. Methoden wiepause()
undresume()
verhalten sich ebenfalls wie erwartet.buffer
<Buffer> | <Uint8Array> | <Function> Entweder ein wiederverwendbarer Speicherbereich zum Speichern eingehender Daten oder eine Funktion, die einen solchen zurückgibt.callback
<Function> Diese Funktion wird für jedes eingehende Datenstück aufgerufen. Zwei Argumente werden an sie übergeben: die Anzahl der inbuffer
geschriebenen Bytes und eine Referenz aufbuffer
. Geben Siefalse
von dieser Funktion zurück, um den Socket implizit zupause()
. Diese Funktion wird im globalen Kontext ausgeführt.readable
<boolean> Lesezugriffe auf den Socket erlauben, wenn einfd
übergeben wird, andernfalls ignoriert. Standard:false
.signal
<AbortSignal> Ein Abort-Signal, das verwendet werden kann, um den Socket zu zerstören.writable
<boolean> Schreibzugriffe auf den Socket erlauben, wenn einfd
übergeben wird, andernfalls ignoriert. Standard:false
.
Rückgabewert: <net.Socket>
Erstellt ein neues Socket-Objekt.
Der neu erstellte Socket kann entweder ein TCP-Socket oder ein Streaming-IPC-Endpunkt sein, abhängig davon, womit er sich connect()
verbindet.
Ereignis: 'close'
Hinzugefügt in: v0.1.90
hadError
<boolean>true
, wenn die Socketverbindung einen Übertragungsfehler hatte.
Wird ausgegeben, sobald die Socketverbindung vollständig geschlossen ist. Das Argument hadError
ist ein boolescher Wert, der angibt, ob die Socketverbindung aufgrund eines Übertragungsfehlers geschlossen wurde.
Ereignis: 'connect'
Hinzugefügt in: v0.1.90
Wird ausgegeben, wenn eine Socketverbindung erfolgreich hergestellt wurde. Siehe net.createConnection()
.
Ereignis: 'connectionAttempt'
Hinzugefügt in: v21.6.0, v20.12.0
ip
<string> Die IP-Adresse, mit der die Socketverbindung aufgebaut werden soll.port
<number> Der Port, mit dem die Socketverbindung aufgebaut werden soll.family
<number> Die Familie der IP-Adresse. Kann6
für IPv6 oder4
für IPv4 sein.
Wird ausgegeben, wenn ein neuer Verbindungsversuch gestartet wird. Dies kann mehrmals ausgegeben werden, wenn der Algorithmus zur automatischen Familienauswahl in socket.connect(options)
aktiviert ist.
Ereignis: 'connectionAttemptFailed'
Hinzugefügt in: v21.6.0, v20.12.0
ip
<string> Die IP-Adresse, mit der die Socketverbindung aufgebaut werden sollte.port
<number> Der Port, mit dem die Socketverbindung aufgebaut werden sollte.family
<number> Die Familie der IP-Adresse. Kann6
für IPv6 oder4
für IPv4 sein.error
<Error> Der Fehler, der mit dem Verbindungsfehler verbunden ist.
Wird ausgegeben, wenn ein Verbindungsversuch fehlgeschlagen ist. Dies kann mehrmals ausgegeben werden, wenn der Algorithmus zur automatischen Familienauswahl in socket.connect(options)
aktiviert ist.
Ereignis: 'connectionAttemptTimeout'
Hinzugefügt in: v21.6.0, v20.12.0
ip
<string> Die IP-Adresse, mit der die Socket-Verbindung aufgebaut werden sollte.port
<number> Der Port, mit dem die Socket-Verbindung aufgebaut werden sollte.family
<number> Die Familie der IP-Adresse. Kann6
für IPv6 oder4
für IPv4 sein.
Wird ausgegeben, wenn ein Verbindungsversuch zeitlich begrenzt wurde. Dies wird nur ausgegeben (und möglicherweise mehrmals), wenn der Algorithmus zur automatischen Familienauswahl in socket.connect(options)
aktiviert ist.
Ereignis: 'data'
Hinzugefügt in: v0.1.90
Wird ausgegeben, wenn Daten empfangen werden. Das Argument data
ist ein Buffer
oder ein String
. Die Kodierung der Daten wird durch socket.setEncoding()
festgelegt.
Die Daten gehen verloren, wenn kein Listener vorhanden ist, wenn ein Socket
ein 'data'
-Ereignis auslöst.
Ereignis: 'drain'
Hinzugefügt in: v0.1.90
Wird ausgegeben, wenn der Schreibpuffer leer wird. Kann verwendet werden, um Uploads zu drosseln.
Siehe auch: die Rückgabewerte von socket.write()
.
Ereignis: 'end'
Hinzugefügt in: v0.1.90
Wird ausgegeben, wenn das andere Ende des Sockets das Ende der Übertragung signalisiert und somit die lesbare Seite des Sockets beendet.
Standardmäßig (allowHalfOpen
ist false
) sendet der Socket ein Ende-der-Übertragung-Paket zurück und zerstört seinen Dateideskriptor, sobald die ausstehende Schreibwarteschlange geschrieben wurde. Wenn jedoch allowHalfOpen
auf true
gesetzt ist, beendet der Socket seine beschreibbare Seite nicht automatisch end()
, sodass der Benutzer beliebige Datenmengen schreiben kann. Der Benutzer muss end()
explizit aufrufen, um die Verbindung zu schließen (d. h. ein FIN-Paket zurückzusenden).
Event: 'error'
Hinzugefügt in: v0.1.90
Wird ausgegeben, wenn ein Fehler auftritt. Das Ereignis 'close'
wird direkt nach diesem Ereignis aufgerufen.
Event: 'lookup'
[Verlauf]
Version | Änderungen |
---|---|
v5.10.0 | Der Parameter host wird jetzt unterstützt. |
v0.11.3 | Hinzugefügt in: v0.11.3 |
Wird nach der Auflösung des Hostnamens, aber vor der Verbindung ausgegeben. Nicht anwendbar auf Unix-Sockets.
err
<Error> | <null> Das Fehlerobjekt. Siehedns.lookup()
.address
<string> Die IP-Adresse.family
<number> | <null> Der Adresstyp. Siehedns.lookup()
.host
<string> Der Hostname.
Event: 'ready'
Hinzugefügt in: v9.11.0
Wird ausgegeben, wenn ein Socket einsatzbereit ist.
Wird unmittelbar nach 'connect'
ausgelöst.
Event: 'timeout'
Hinzugefügt in: v0.1.90
Wird ausgegeben, wenn der Socket aufgrund von Inaktivität ein Timeout erhält. Dies dient nur zur Benachrichtigung, dass der Socket inaktiv war. Der Benutzer muss die Verbindung manuell schließen.
Siehe auch: socket.setTimeout()
.
socket.address()
[Verlauf]
Version | Änderungen |
---|---|
v18.4.0 | Die Eigenschaft family gibt jetzt einen String statt einer Zahl zurück. |
v18.0.0 | Die Eigenschaft family gibt jetzt eine Zahl statt eines Strings zurück. |
v0.1.90 | Hinzugefügt in: v0.1.90 |
- Rückgabewert: <Object>
Gibt die gebundene address
, den Adressnamen family
und den port
des Sockets zurück, wie vom Betriebssystem gemeldet: { port: 12346, family: 'IPv4', address: '127.0.0.1' }
socket.autoSelectFamilyAttemptedAddresses
Hinzugefügt in: v19.4.0, v18.18.0
Diese Eigenschaft ist nur vorhanden, wenn der Algorithmus zur automatischen Familienauswahl in socket.connect(options)
aktiviert ist, und es sich um ein Array der Adressen handelt, die versucht wurden.
Jede Adresse ist eine Zeichenkette der Form $IP:$PORT
. Wenn die Verbindung erfolgreich war, ist die letzte Adresse die Adresse, mit der der Socket aktuell verbunden ist.
socket.bufferSize
Hinzugefügt in: v0.3.8
Veraltet seit: v14.6.0
[Stabil: 0 - Veraltet]
Stabil: 0 Stabilität: 0 - Veraltet: Verwenden Sie stattdessen writable.writableLength
.
Diese Eigenschaft zeigt die Anzahl der zum Schreiben gepufferten Zeichen an. Der Puffer kann Zeichenketten enthalten, deren Länge nach der Codierung noch nicht bekannt ist. Diese Zahl ist daher nur eine Annäherung an die Anzahl der Bytes im Puffer.
net.Socket
hat die Eigenschaft, dass socket.write()
immer funktioniert. Dies soll Benutzern helfen, schnell einsatzbereit zu sein. Der Computer kann nicht immer mit der Datenmenge Schritt halten, die in einen Socket geschrieben wird. Die Netzwerkverbindung ist möglicherweise einfach zu langsam. Node.js puffert die in einen Socket geschriebenen Daten intern und sendet sie über die Leitung, sobald dies möglich ist.
Die Folge dieses internen Puffers ist, dass der Speicher wachsen kann. Benutzer, die auf große oder wachsende bufferSize
stoßen, sollten versuchen, die Datenströme in ihrem Programm mit socket.pause()
und socket.resume()
zu „drosseln“.
socket.bytesRead
Hinzugefügt in: v0.5.3
Die Anzahl der empfangenen Bytes.
socket.bytesWritten
Hinzugefügt in: v0.5.3
Die Anzahl der gesendeten Bytes.
socket.connect()
Initiiert eine Verbindung auf einem gegebenen Socket.
Mögliche Signaturen:
socket.connect(options[, connectListener])
socket.connect(path[, connectListener])
für IPC Verbindungen.socket.connect(port[, host][, connectListener])
für TCP Verbindungen.- Rückgabewert: <net.Socket> Der Socket selbst.
Diese Funktion ist asynchron. Wenn die Verbindung hergestellt ist, wird das Ereignis 'connect'
emittiert. Bei Verbindungsproblemen wird statt des Ereignisses 'connect'
ein Ereignis 'error'
mit dem an den 'error'
Listener übergebenen Fehler emittiert. Der letzte Parameter connectListener
wird, falls angegeben, einmalig als Listener für das Ereignis 'connect'
hinzugefügt.
Diese Funktion sollte nur zum erneuten Verbinden eines Sockets verwendet werden, nachdem 'close'
emittiert wurde; andernfalls kann dies zu undefiniertem Verhalten führen.
socket.connect(options[, connectListener])
[Historie]
Version | Änderungen |
---|---|
v19.4.0 | Der Standardwert für die Option autoSelectFamily kann zur Laufzeit mit setDefaultAutoSelectFamily oder über die Befehlszeilenoption --enable-network-family-autoselection geändert werden. |
v20.0.0, v18.18.0 | Der Standardwert für die Option autoSelectFamily ist jetzt true. Die CLI-Flag --enable-network-family-autoselection wurde in --network-family-autoselection umbenannt. Der alte Name ist jetzt ein Alias, wird aber nicht mehr empfohlen. |
v19.3.0, v18.13.0 | Die Option autoSelectFamily wurde hinzugefügt. |
v17.7.0, v16.15.0 | Die Optionen noDelay , keepAlive und keepAliveInitialDelay werden jetzt unterstützt. |
v6.0.0 | Die Option hints hat jetzt in allen Fällen den Standardwert 0 . Zuvor hatte sie in Abwesenheit der Option family den Standardwert `dns.ADDRCONFIG |
v5.11.0 | Die Option hints wird jetzt unterstützt. |
v0.1.90 | Hinzugefügt in: v0.1.90 |
options
<Object>connectListener
<Function> Gemeinsamer Parameter dersocket.connect()
Methoden. Wird einmalig als Listener für das Ereignis'connect'
hinzugefügt.- Rückgabewert: <net.Socket> Der Socket selbst.
Initiiert eine Verbindung auf einem gegebenen Socket. Normalerweise ist diese Methode nicht erforderlich; der Socket sollte mit net.createConnection()
erstellt und geöffnet werden. Verwenden Sie dies nur bei der Implementierung eines benutzerdefinierten Sockets.
Für TCP-Verbindungen sind folgende options
verfügbar:
autoSelectFamily
<boolean>: Wenn auftrue
gesetzt, aktiviert dies einen Algorithmus zur automatischen Familienerkennung, der lose Abschnitt 5 von RFC 8305 implementiert. Die an lookup übergebene Optionall
wird auftrue
gesetzt, und die Sockets versuchen nacheinander, eine Verbindung zu allen erhaltenen IPv6- und IPv4-Adressen herzustellen, bis eine Verbindung hergestellt ist. Zuerst wird die erste zurückgegebene AAAA-Adresse versucht, dann die erste zurückgegebene A-Adresse, dann die zweite zurückgegebene AAAA-Adresse usw. Jeder Verbindungsversuch (außer dem letzten) erhält die durch die OptionautoSelectFamilyAttemptTimeout
angegebene Zeit, bevor ein Timeout auftritt und die nächste Adresse versucht wird. Wird ignoriert, wenn die Optionfamily
nicht0
ist oder wennlocalAddress
gesetzt ist. Verbindungsfehler werden nicht emittiert, wenn mindestens eine Verbindung erfolgreich ist. Wenn alle Verbindungsversuche fehlschlagen, wird ein einzelnerAggregateError
mit allen fehlgeschlagenen Versuchen emittiert. Standard:net.getDefaultAutoSelectFamily()
.autoSelectFamilyAttemptTimeout
<number>: Die Wartezeit in Millisekunden, bis ein Verbindungsversuch abgeschlossen ist, bevor die nächste Adresse versucht wird, wenn die OptionautoSelectFamily
verwendet wird. Wenn ein positiver Integer kleiner als10
gesetzt wird, wird stattdessen der Wert10
verwendet. Standard:net.getDefaultAutoSelectFamilyAttemptTimeout()
.family
<number>: Version des IP-Stacks. Muss4
,6
oder0
sein. Der Wert0
gibt an, dass sowohl IPv4- als auch IPv6-Adressen zulässig sind. Standard:0
.hints
<number> Optionaledns.lookup()
Hinweise.host
<string> Host, mit dem sich der Socket verbinden soll. Standard:'localhost'
.keepAlive
<boolean> Wenn auftrue
gesetzt, aktiviert dies die Keep-Alive-Funktionalität auf dem Socket unmittelbar nach dem Herstellen der Verbindung, ähnlich wie insocket.setKeepAlive()
. Standard:false
.keepAliveInitialDelay
<number> Wenn auf eine positive Zahl gesetzt, wird die anfängliche Verzögerung vor dem Senden des ersten Keepalive-Probes auf einem inaktiven Socket festgelegt. Standard:0
.localAddress
<string> Lokale Adresse, von der aus sich der Socket verbinden soll.localPort
<number> Lokaler Port, von dem aus sich der Socket verbinden soll.lookup
<Function> Benutzerdefinierte Lookup-Funktion. Standard:dns.lookup()
.noDelay
<boolean> Wenn auftrue
gesetzt, deaktiviert dies die Verwendung des Algorithmus von Nagle unmittelbar nach dem Herstellen des Sockets. Standard:false
.port
<number> Erforderlich. Port, mit dem sich der Socket verbinden soll.blockList
<net.BlockList>blockList
kann verwendet werden, um den ausgehenden Zugriff auf bestimmte IP-Adressen, IP-Bereiche oder IP-Subnetze zu deaktivieren.
Für IPC Verbindungen sind folgende options
verfügbar:
path
<string> Erforderlich. Pfad, mit dem sich der Client verbinden soll. Siehe Identifizieren von Pfaden für IPC-Verbindungen. Wenn angegeben, werden die oben genannten TCP-spezifischen Optionen ignoriert.
socket.connect(path[, connectListener])
path
<string> Pfad, zu dem sich der Client verbinden soll. Siehe Pfade für IPC-Verbindungen identifizieren.connectListener
<Function> Gemeinsamer Parameter dersocket.connect()
Methoden. Wird einmalig als Listener für das'connect'
Ereignis hinzugefügt.- Rückgabewert: <net.Socket> Das Socket selbst.
Initiiert eine IPC Verbindung auf dem angegebenen Socket.
Alias zu socket.connect(options[, connectListener])
, aufgerufen mit { path: path }
als options
.
socket.connect(port[, host][, connectListener])
Hinzugefügt in: v0.1.90
port
<number> Port, zu dem sich der Client verbinden soll.host
<string> Host, zu dem sich der Client verbinden soll.connectListener
<Function> Gemeinsamer Parameter dersocket.connect()
Methoden. Wird einmalig als Listener für das'connect'
Ereignis hinzugefügt.- Rückgabewert: <net.Socket> Das Socket selbst.
Initiiert eine TCP-Verbindung auf dem angegebenen Socket.
Alias zu socket.connect(options[, connectListener])
, aufgerufen mit {port: port, host: host}
als options
.
socket.connecting
Hinzugefügt in: v6.1.0
Wenn true
, wurde socket.connect(options[, connectListener])
aufgerufen und ist noch nicht abgeschlossen. Es bleibt true
, bis das Socket verbunden ist, dann wird es auf false
gesetzt und das Ereignis 'connect'
wird emittiert. Beachten Sie, dass der Rückruf socket.connect(options[, connectListener])
ein Listener für das Ereignis 'connect'
ist.
socket.destroy([error])
Hinzugefügt in: v0.1.90
error
<Object>- Rückgabewert: <net.Socket>
Stellt sicher, dass keine weitere E/A-Aktivität auf diesem Socket stattfindet. Zerstört den Stream und schließt die Verbindung.
Siehe writable.destroy()
für weitere Details.
socket.destroyed
- <boolean> Gibt an, ob die Verbindung zerstört wurde oder nicht. Sobald eine Verbindung zerstört ist, können keine weiteren Daten mehr darüber übertragen werden.
Siehe writable.destroyed
für weitere Details.
socket.destroySoon()
Hinzugefügt in: v0.3.4
Zerstört den Socket, nachdem alle Daten geschrieben wurden. Wenn das Ereignis 'finish'
bereits ausgelöst wurde, wird der Socket sofort zerstört. Wenn der Socket noch beschreibbar ist, ruft er implizit socket.end()
auf.
socket.end([data[, encoding]][, callback])
Hinzugefügt in: v0.1.90
data
<string> | <Buffer> | <Uint8Array>encoding
<string> Wird nur verwendet, wenndata
einstring
ist. Standard:'utf8'
.callback
<Function> Optionaler Callback, wenn der Socket fertig ist.- Rückgabewert: <net.Socket> Der Socket selbst.
Schließt den Socket halbseitig. D.h., es wird ein FIN-Paket gesendet. Es ist möglich, dass der Server trotzdem noch einige Daten sendet.
Siehe writable.end()
für weitere Details.
socket.localAddress
Hinzugefügt in: v0.9.6
Die String-Darstellung der lokalen IP-Adresse, an der der Remote-Client eine Verbindung herstellt. Beispielsweise würde bei einem Server, der auf '0.0.0.0'
lauscht, der Wert von socket.localAddress
'192.168.1.1'
sein, wenn ein Client auf '192.168.1.1'
eine Verbindung herstellt.
socket.localPort
Hinzugefügt in: v0.9.6
Die numerische Darstellung des lokalen Ports. Beispielsweise 80
oder 21
.
socket.localFamily
Hinzugefügt in: v18.8.0, v16.18.0
Die Zeichenketten-Darstellung der lokalen IP-Familie. 'IPv4'
oder 'IPv6'
.
socket.pause()
- Rückgabewert: <net.Socket> Das Socket selbst.
Pausiert das Lesen von Daten. Das heißt, 'data'
Ereignisse werden nicht emittiert. Nützlich, um einen Upload zu drosseln.
socket.pending
Hinzugefügt in: v11.2.0, v10.16.0
Ist true
, wenn die Socketverbindung noch nicht hergestellt ist, entweder weil .connect()
noch nicht aufgerufen wurde oder weil die Verbindung noch hergestellt wird (siehe socket.connecting
).
socket.ref()
Hinzugefügt in: v0.9.1
- Rückgabewert: <net.Socket> Das Socket selbst.
Gegenteil von unref()
. Ein Aufruf von ref()
auf einem zuvor unref
ed Socket verhindert, dass das Programm beendet wird, wenn es das einzige verbleibende Socket ist (das Standardverhalten). Wenn das Socket ref
ed ist, hat ein erneuter Aufruf von ref
keine Auswirkung.
socket.remoteAddress
Hinzugefügt in: v0.5.10
Die Zeichenketten-Darstellung der Remote-IP-Adresse. Beispielsweise '74.125.127.100'
oder '2001:4860:a005::68'
. Der Wert kann undefined
sein, wenn das Socket zerstört wird (z. B. wenn der Client die Verbindung trennt).
socket.remoteFamily
Hinzugefügt in: v0.11.14
Die Zeichenketten-Darstellung der Remote-IP-Familie. 'IPv4'
oder 'IPv6'
. Der Wert kann undefined
sein, wenn das Socket zerstört wird (z. B. wenn der Client die Verbindung trennt).
socket.remotePort
Hinzugefügt in: v0.5.10
Die numerische Darstellung des Remote-Ports. Beispielsweise 80
oder 21
. Der Wert kann undefined
sein, wenn der Socket zerstört wird (z. B. wenn der Client die Verbindung getrennt hat).
socket.resetAndDestroy()
Hinzugefügt in: v18.3.0, v16.17.0
- Rückgabewert: <net.Socket>
Schließt die TCP-Verbindung durch Senden eines RST-Pakets und zerstört den Stream. Befindet sich dieser TCP-Socket im Verbindungsstatus, sendet er ein RST-Paket und zerstört diesen TCP-Socket, sobald die Verbindung hergestellt ist. Andernfalls ruft er socket.destroy
mit einem ERR_SOCKET_CLOSED
-Fehler auf. Handelt es sich nicht um einen TCP-Socket (z. B. eine Pipe), löst der Aufruf dieser Methode sofort einen ERR_INVALID_HANDLE_TYPE
-Fehler aus.
socket.resume()
- Rückgabewert: <net.Socket> Der Socket selbst.
Setzt das Lesen nach einem Aufruf von socket.pause()
fort.
socket.setEncoding([encoding])
Hinzugefügt in: v0.1.90
encoding
<string>- Rückgabewert: <net.Socket> Der Socket selbst.
Legt die Codierung für den Socket als Readable Stream fest. Weitere Informationen finden Sie unter readable.setEncoding()
.
socket.setKeepAlive([enable][, initialDelay])
[Verlauf]
Version | Änderungen |
---|---|
v13.12.0, v12.17.0 | Neue Standardwerte für die Socket-Optionen TCP_KEEPCNT und TCP_KEEPINTVL wurden hinzugefügt. |
v0.1.92 | Hinzugefügt in: v0.1.92 |
enable
<boolean> Standardwert:false
initialDelay
<number> Standardwert:0
- Rückgabewert: <net.Socket> Der Socket selbst.
Aktiviert/deaktiviert die Keep-Alive-Funktionalität und legt optional die anfängliche Verzögerung fest, bevor die erste Keepalive-Sondierung an einem inaktiven Socket gesendet wird.
Setzen Sie initialDelay
(in Millisekunden), um die Verzögerung zwischen dem letzten empfangenen Datenpaket und der ersten Keepalive-Sondierung festzulegen. Wenn Sie 0
für initialDelay
einstellen, bleibt der Wert unverändert gegenüber der Standard- (oder vorherigen) Einstellung.
Das Aktivieren der Keep-Alive-Funktionalität setzt die folgenden Socket-Optionen:
SO_KEEPALIVE=1
TCP_KEEPIDLE=initialDelay
TCP_KEEPCNT=10
TCP_KEEPINTVL=1
socket.setNoDelay([noDelay])
Hinzugefügt in: v0.1.90
noDelay
<boolean> Standardwert:true
- Rückgabewert: <net.Socket> Das Socket selbst.
Aktiviert/deaktiviert die Verwendung des Algorithmus von Nagle.
Wenn eine TCP-Verbindung hergestellt wird, ist der Algorithmus von Nagle aktiviert.
Der Algorithmus von Nagle verzögert Daten, bevor sie über das Netzwerk gesendet werden. Er versucht, den Durchsatz auf Kosten der Latenz zu optimieren.
Wenn true
für noDelay
übergeben wird oder kein Argument übergeben wird, wird der Algorithmus von Nagle für das Socket deaktiviert. Wenn false
für noDelay
übergeben wird, wird der Algorithmus von Nagle aktiviert.
socket.setTimeout(timeout[, callback])
[Verlauf]
Version | Änderungen |
---|---|
v18.0.0 | Das Übergeben eines ungültigen Callbacks an das callback -Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus. |
v0.1.90 | Hinzugefügt in: v0.1.90 |
timeout
<number>callback
<Function>- Rückgabewert: <net.Socket> Das Socket selbst.
Legt das Socket so fest, dass es nach timeout
Millisekunden Inaktivität auf dem Socket ein Timeout erhält. Standardmäßig haben net.Socket
kein Timeout.
Wenn ein Idle-Timeout ausgelöst wird, erhält das Socket ein 'timeout'
-Ereignis, die Verbindung wird jedoch nicht getrennt. Der Benutzer muss manuell socket.end()
oder socket.destroy()
aufrufen, um die Verbindung zu beenden.
socket.setTimeout(3000)
socket.on('timeout', () => {
console.log('socket timeout')
socket.end()
})
Wenn timeout
0 ist, wird das vorhandene Idle-Timeout deaktiviert.
Der optionale callback
-Parameter wird als einmaliger Listener für das 'timeout'
-Ereignis hinzugefügt.
socket.timeout
Hinzugefügt in: v10.7.0
Das Socket-Timeout in Millisekunden, wie von socket.setTimeout()
gesetzt. Es ist undefined
, wenn kein Timeout gesetzt wurde.
socket.unref()
Hinzugefügt in: v0.9.1
- Rückgabewert: <net.Socket> Das Socket selbst.
Ein Aufruf von unref()
auf einem Socket ermöglicht es dem Programm, zu beenden, wenn dies das einzige aktive Socket im Ereignissystem ist. Wenn das Socket bereits unref
ed ist, hat ein erneuter Aufruf von unref()
keine Auswirkung.
socket.write(data[, encoding][, callback])
Hinzugefügt in: v0.1.90
data
<string> | <Buffer> | <Uint8Array>encoding
<string> Nur verwendet, wenndata
einstring
ist. Standard:utf8
.callback
<Function>- Rückgabewert: <boolean>
Sendet Daten über das Socket. Der zweite Parameter gibt die Kodierung im Falle einer Zeichenkette an. Standardmäßig wird die UTF8-Kodierung verwendet.
Gibt true
zurück, wenn die gesamten Daten erfolgreich in den Kernel-Puffer geleert wurden. Gibt false
zurück, wenn alle oder ein Teil der Daten im Benutzer-Speicher zwischengespeichert wurden. 'drain'
wird emittiert, wenn der Puffer wieder frei ist.
Der optionale callback
-Parameter wird ausgeführt, wenn die Daten endgültig geschrieben wurden, was möglicherweise nicht sofort der Fall ist.
Siehe Writable
Stream write()
Methode für weitere Informationen.
socket.readyState
Hinzugefügt in: v0.5.0
Diese Eigenschaft stellt den Zustand der Verbindung als Zeichenkette dar.
- Wenn der Stream eine Verbindung herstellt, ist
socket.readyState
opening
. - Wenn der Stream lesbar und beschreibbar ist, ist er
open
. - Wenn der Stream lesbar, aber nicht beschreibbar ist, ist er
readOnly
. - Wenn der Stream weder lesbar noch beschreibbar ist, ist er
writeOnly
.
net.connect()
Alias zu net.createConnection()
.
Mögliche Signaturen:
net.connect(options[, connectListener])
net.connect(path[, connectListener])
für IPC-Verbindungen.net.connect(port[, host][, connectListener])
für TCP-Verbindungen.
net.connect(options[, connectListener])
Hinzugefügt in: v0.7.0
options
<Object>connectListener
<Function>- Gibt zurück: <net.Socket>
Alias zu net.createConnection(options[, connectListener])
.
net.connect(path[, connectListener])
Hinzugefügt in: v0.1.90
path
<string>connectListener
<Function>- Gibt zurück: <net.Socket>
Alias zu net.createConnection(path[, connectListener])
.
net.connect(port[, host][, connectListener])
Hinzugefügt in: v0.1.90
port
<number>host
<string>connectListener
<Function>- Gibt zurück: <net.Socket>
Alias zu net.createConnection(port[, host][, connectListener])
.
net.createConnection()
Eine Fabrikfunktion, die ein neues net.Socket
erstellt, sofort eine Verbindung mit socket.connect()
initiiert und dann das net.Socket
zurückgibt, das die Verbindung startet.
Wenn die Verbindung hergestellt ist, wird ein 'connect'
-Ereignis auf dem zurückgegebenen Socket emittiert. Der letzte Parameter connectListener
wird, falls angegeben, einmalig als Listener für das 'connect'
-Ereignis hinzugefügt.
Mögliche Signaturen:
net.createConnection(options[, connectListener])
net.createConnection(path[, connectListener])
für IPC-Verbindungen.net.createConnection(port[, host][, connectListener])
für TCP-Verbindungen.
Die Funktion net.connect()
ist ein Alias für diese Funktion.
net.createConnection(options[, connectListener])
Hinzugefügt in: v0.1.90
options
<Object> Erforderlich. Wird sowohl an den Aufrufnew net.Socket([options])
als auch an die Methodesocket.connect(options[, connectListener])
übergeben.connectListener
<Function> Gemeinsamer Parameter der Funktionennet.createConnection()
. Wird, falls angegeben, einmalig als Listener für das'connect'
-Ereignis auf dem zurückgegebenen Socket hinzugefügt.- Rückgabewert: <net.Socket> Der neu erstellte Socket, der verwendet wird, um die Verbindung zu starten.
Für verfügbare Optionen siehe new net.Socket([options])
und socket.connect(options[, connectListener])
.
Zusätzliche Optionen:
timeout
<number> Falls gesetzt, wird verwendet, umsocket.setTimeout(timeout)
aufzurufen, nachdem der Socket erstellt wurde, aber bevor er die Verbindung beginnt.
Im Folgenden finden Sie ein Beispiel für einen Client des Echo-Servers, der im Abschnitt net.createServer()
beschrieben wird:
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')
})
Um sich mit dem Socket /tmp/echo.sock
zu verbinden:
const client = net.createConnection({ path: '/tmp/echo.sock' })
Im Folgenden finden Sie ein Beispiel für einen Client, der die Optionen port
und onread
verwendet. In diesem Fall wird die Option onread
nur zum Aufruf von new net.Socket([options])
verwendet und die Option port
zum Aufruf von socket.connect(options[, connectListener])
.
import net from 'node:net'
import { Buffer } from 'node:buffer'
net.createConnection({
port: 8124,
onread: {
// Verwendet einen 4KiB Buffer für jede Lektüre vom Socket.
buffer: Buffer.alloc(4 * 1024),
callback: function (nread, buf) {
// Empfangene Daten sind in `buf` von 0 bis `nread` verfügbar.
console.log(buf.toString('utf8', 0, nread))
},
},
})
const net = require('node:net')
net.createConnection({
port: 8124,
onread: {
// Verwendet einen 4KiB Buffer für jede Lektüre vom Socket.
buffer: Buffer.alloc(4 * 1024),
callback: function (nread, buf) {
// Empfangene Daten sind in `buf` von 0 bis `nread` verfügbar.
console.log(buf.toString('utf8', 0, nread))
},
},
})
net.createConnection(path[, connectListener])
Hinzugefügt in: v0.1.90
path
<string> Pfad, zu dem die Socketverbindung hergestellt werden soll. Wird ansocket.connect(path[, connectListener])
übergeben. Siehe Identifizieren von Pfaden für IPC-Verbindungen.connectListener
<Function> Gemeinsamer Parameter dernet.createConnection()
-Funktionen, ein "once"-Listener für das Ereignis'connect'
an der initiierenden Socket. Wird ansocket.connect(path[, connectListener])
übergeben.- Gibt zurück: <net.Socket> Die neu erstellte Socket, die verwendet wird, um die Verbindung zu starten.
Initiiert eine IPC-Verbindung.
Diese Funktion erstellt eine neue net.Socket
mit allen Optionen auf Standardwerten, initiiert sofort eine Verbindung mit socket.connect(path[, connectListener])
und gibt dann die net.Socket
zurück, die die Verbindung startet.
net.createConnection(port[, host][, connectListener])
Hinzugefügt in: v0.1.90
port
<number> Port, zu dem die Socketverbindung hergestellt werden soll. Wird ansocket.connect(port[, host][, connectListener])
übergeben.host
<string> Host, zu dem die Socketverbindung hergestellt werden soll. Wird ansocket.connect(port[, host][, connectListener])
übergeben. Standard:'localhost'
.connectListener
<Function> Gemeinsamer Parameter dernet.createConnection()
-Funktionen, ein "once"-Listener für das Ereignis'connect'
an der initiierenden Socket. Wird ansocket.connect(port[, host][, connectListener])
übergeben.- Gibt zurück: <net.Socket> Die neu erstellte Socket, die verwendet wird, um die Verbindung zu starten.
Initiiert eine TCP-Verbindung.
Diese Funktion erstellt eine neue net.Socket
mit allen Optionen auf Standardwerten, initiiert sofort eine Verbindung mit socket.connect(port[, host][, connectListener])
und gibt dann die net.Socket
zurück, die die Verbindung startet.
net.createServer([options][, connectionListener])
[Versionsgeschichte]
Version | Änderungen |
---|---|
v20.1.0, v18.17.0 | Die Option highWaterMark wird jetzt unterstützt. |
v17.7.0, v16.15.0 | Die Optionen noDelay , keepAlive und keepAliveInitialDelay werden jetzt unterstützt. |
v0.5.0 | Hinzugefügt in: v0.5.0 |
options
<Objekt>allowHalfOpen
<boolean> Wenn auffalse
gesetzt, beendet der Socket die beschreibbare Seite automatisch, wenn die lesbare Seite beendet wird. Standardwert:false
.highWaterMark
<number> Überschreibt optional allereadableHighWaterMark
undwritableHighWaterMark
vonnet.Socket
. Standardwert: Siehestream.getDefaultHighWaterMark()
.keepAlive
<boolean> Wenn auftrue
gesetzt, aktiviert es die Keep-Alive-Funktionalität auf dem Socket unmittelbar nach dem Empfang einer neuen eingehenden Verbindung, ähnlich wie insocket.setKeepAlive()
. Standardwert:false
.keepAliveInitialDelay
<number> Wenn auf eine positive Zahl gesetzt, legt es die anfängliche Verzögerung fest, bevor der erste Keepalive-Probe auf einem inaktiven Socket gesendet wird. Standardwert:0
.noDelay
<boolean> Wenn auftrue
gesetzt, deaktiviert es die Verwendung des Algorithmus von Nagle unmittelbar nach dem Empfang einer neuen eingehenden Verbindung. Standardwert:false
.pauseOnConnect
<boolean> Gibt an, ob der Socket bei eingehenden Verbindungen angehalten werden soll. Standardwert:false
.blockList
<net.BlockList>blockList
kann verwendet werden, um den eingehenden Zugriff auf bestimmte IP-Adressen, IP-Bereiche oder IP-Subnetze zu deaktivieren. Dies funktioniert nicht, wenn sich der Server hinter einem Reverse-Proxy, NAT usw. befindet, da die gegen die Blockliste überprüfte Adresse die Adresse des Proxys oder die vom NAT angegebene Adresse ist.
connectionListener
<Funktion> Automatisch als Listener für das Ereignis'connection'
gesetzt.Gibt zurück: <net.Server>
Erstellt einen neuen TCP- oder IPC-Server.
Wenn allowHalfOpen
auf true
gesetzt ist, sendet der Server, wenn das andere Ende des Sockets das Ende der Übertragung signalisiert, das Ende der Übertragung nur zurück, wenn socket.end()
explizit aufgerufen wird. Beispielsweise sendet ein TCP-Server, wenn ein FIN-Paket empfangen wird, ein FIN-Paket nur zurück, wenn socket.end()
explizit aufgerufen wird. Bis dahin ist die Verbindung halb geschlossen (nicht lesbar, aber noch beschreibbar). Siehe Ereignis 'end'
und RFC 1122 (Abschnitt 4.2.2.13) für weitere Informationen.
Wenn pauseOnConnect
auf true
gesetzt ist, wird der mit jeder eingehenden Verbindung verknüpfte Socket angehalten und es werden keine Daten von seinem Handle gelesen. Dies ermöglicht es, Verbindungen zwischen Prozessen zu übergeben, ohne dass Daten vom ursprünglichen Prozess gelesen werden. Um mit dem Lesen von Daten aus einem angehaltenen Socket zu beginnen, rufen Sie socket.resume()
auf.
Der Server kann ein TCP-Server oder ein IPC-Server sein, abhängig davon, worauf er listen()
hört.
Hier ist ein Beispiel für einen TCP-Echo-Server, der auf Verbindungen an Port 8124 lauscht:
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')
})
Testen Sie dies mit telnet
:
telnet localhost 8124
Um auf dem Socket /tmp/echo.sock
zu lauschen:
server.listen('/tmp/echo.sock', () => {
console.log('server bound')
})
Verwenden Sie nc
, um eine Verbindung zu einem Unix-Domain-Socket-Server herzustellen:
nc -U /tmp/echo.sock
net.getDefaultAutoSelectFamily()
Hinzugefügt in: v19.4.0
Ruft den aktuellen Standardwert der Option autoSelectFamily
von socket.connect(options)
ab. Der anfängliche Standardwert ist true
, es sei denn, die Befehlszeilenoption --no-network-family-autoselection
wird angegeben.
- Rückgabewert: <boolean> Der aktuelle Standardwert der Option
autoSelectFamily
.
net.setDefaultAutoSelectFamily(value)
Hinzugefügt in: v19.4.0
Setzt den Standardwert der Option autoSelectFamily
von socket.connect(options)
.
value
<boolean> Der neue Standardwert. Der anfängliche Standardwert isttrue
, es sei denn, die Befehlszeilenoption--no-network-family-autoselection
wird angegeben.
net.getDefaultAutoSelectFamilyAttemptTimeout()
Hinzugefügt in: v19.8.0, v18.18.0
Ruft den aktuellen Standardwert der Option autoSelectFamilyAttemptTimeout
von socket.connect(options)
ab. Der anfängliche Standardwert ist 250
oder der über die Befehlszeilenoption --network-family-autoselection-attempt-timeout
angegebene Wert.
- Rückgabewert: <number> Der aktuelle Standardwert der Option
autoSelectFamilyAttemptTimeout
.
net.setDefaultAutoSelectFamilyAttemptTimeout(value)
Hinzugefügt in: v19.8.0, v18.18.0
Setzt den Standardwert der Option autoSelectFamilyAttemptTimeout
von socket.connect(options)
.
value
<number> Der neue Standardwert, der eine positive Zahl sein muss. Wenn die Zahl kleiner als10
ist, wird stattdessen der Wert10
verwendet. Der anfängliche Standardwert ist250
oder der über die Befehlszeilenoption--network-family-autoselection-attempt-timeout
angegebene Wert.
net.isIP(input)
Hinzugefügt in: v0.3.0
Gibt 6
zurück, wenn input
eine IPv6-Adresse ist. Gibt 4
zurück, wenn input
eine IPv4-Adresse in Punkt-Dezimal-Notation ohne führende Nullen ist. Andernfalls wird 0
zurückgegeben.
net.isIP('::1') // gibt 6 zurück
net.isIP('127.0.0.1') // gibt 4 zurück
net.isIP('127.000.000.001') // gibt 0 zurück
net.isIP('127.0.0.1/24') // gibt 0 zurück
net.isIP('fhqwhgads') // gibt 0 zurück
net.isIPv4(input)
Hinzugefügt in: v0.3.0
Gibt true
zurück, wenn input
eine IPv4-Adresse in Punkt-Dezimal-Notation ohne führende Nullen ist. Andernfalls wird false
zurückgegeben.
net.isIPv4('127.0.0.1') // gibt true zurück
net.isIPv4('127.000.000.001') // gibt false zurück
net.isIPv4('127.0.0.1/24') // gibt false zurück
net.isIPv4('fhqwhgads') // gibt false zurück
net.isIPv6(input)
Hinzugefügt in: v0.3.0
Gibt true
zurück, wenn input
eine IPv6-Adresse ist. Andernfalls wird false
zurückgegeben.
net.isIPv6('::1') // gibt true zurück
net.isIPv6('fhqwhgads') // gibt false zurück