Net
[Stable: 2 - Stabil]
Stable: 2 Stability: 2 - Stabil
Source Code: 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 aufgerufen werden:
import net from 'node:net';
const net = require('node:net');
IPC-Unterstützung
[Verlauf]
Version | Änderungen |
---|---|
v20.8.0 | Unterstützung für die Bindung an einen abstrakten Unix Domain Socket Pfad 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 auf anderen Betriebssystemen.
Identifizieren von Pfaden für IPC-Verbindungen
net.connect()
, net.createConnection()
, server.listen()
und socket.connect()
benötigen einen path
-Parameter, um IPC-Endpunkte zu identifizieren.
Unter Unix wird die lokale Domain auch als Unix-Domain bezeichnet. Der Pfad ist ein Dateisystem-Pfadname. 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 auch der Unix Domain Socket entlinkt. Zum Beispiel kann net.createServer()
einen Unix Domain Socket erstellen und server.close()
wird ihn entlinken. Wenn jedoch ein Benutzer den Unix Domain Socket außerhalb dieser Abstraktionen erstellt, muss der Benutzer ihn entfernen. Das Gleiche gilt, wenn eine Node.js-API einen Unix Domain Socket erstellt, das Programm dann aber abstürzt. Kurz gesagt, ein Unix Domain Socket ist im Dateisystem sichtbar und bleibt so lange bestehen, bis er entlinkt wird. Unter Linux können Sie einen abstrakten Unix-Socket verwenden, indem Sie \0
am Anfang des Pfads 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 Domain mit einer Named Pipe implementiert. Der Pfad muss auf einen Eintrag in \\?\pipe\
oder \\.\pipe\
verweisen. Alle Zeichen sind zulässig, aber letztere können Pipe-Namen verarbeiten, z. B. das Auflösen von ..
-Sequenzen. Trotz des Aussehens ist der Pipe-Namespace flach. Pipes bleiben nicht bestehen. 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 besitzende Prozess beendet wird.
JavaScript-String-Escaping erfordert, dass Pfade mit zusätzlichen Backslash-Escapings angegeben werden, wie 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 eingehenden oder ausgehenden Zugriffs auf bestimmte IP-Adressen, IP-Bereiche oder IP-Subnetze festzulegen.
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 anfängliche IPv4- oder IPv6-Adresse im Bereich.end
<string> | <net.SocketAddress> Die endende 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
(einschließlich) bis end
(einschließlich) 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 prüfende IP-Adressetype
<string> Entweder'ipv4'
oder'ipv6'
. Standard:'ipv4'
.- Rückgabe: <boolean>
Gibt true
zurück, wenn die angegebene IP-Adresse mit einer der zur 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')); // Prints: true
console.log(blockList.check('10.0.0.3')); // Prints: true
console.log(blockList.check('222.111.111.222')); // Prints: false
// IPv6-Notation für IPv4-Adressen funktioniert:
console.log(blockList.check('::ffff:7b7b:7b7b', 'ipv6')); // Prints: true
console.log(blockList.check('::ffff:123.123.123.123', 'ipv6')); // Prints: true
blockList.rules
Hinzugefügt in: v15.0.0, v14.18.0
- Typ: <string[]>
Die Liste der Regeln, die der Sperrliste hinzugefügt wurden.
BlockList.isBlockList(value)
Hinzugefügt in: v23.4.0
value
<any> Ein beliebiger JS-Wert- Gibt
true
zurück, wenn dervalue
einenet.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 entweder als IPv4- oder IPv6-String. Standard:'127.0.0.1'
, wennfamily
'ipv4'
ist;'::'
, wennfamily
'ipv6'
ist.family
<string> Entweder'ipv4'
oder'ipv6'
. Standard:'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 Eingabezeichenfolge, die eine IP-Adresse und einen optionalen Port enthält, z. B.123.1.2.3:1234
oder[1::1]:1234
.- Rückgabe: <net.SocketAddress> Gibt ein
SocketAddress
zurück, wenn die Analyse 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> Wird automatisch als Listener für das'connection'
-Ereignis gesetzt.- Rückgabe: <net.Server>
net.Server
ist ein EventEmitter
mit den folgenden Ereignissen:
Ereignis: 'close'
Hinzugefügt in: v0.5.0
Wird ausgelöst, wenn der Server schließt. Wenn Verbindungen bestehen, wird dieses Ereignis erst ausgelöst, wenn alle Verbindungen beendet sind.
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 'close'
-Ereignis 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. Wenn es sich um einen TCP-Server handelt, ist das Argument wie folgt, andernfalls ist das Argument undefined
.
data
<Object> Das Argument, das an den Event-Listener übergeben wird.
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 gelauscht wird (nützlich, um herauszufinden, welcher Port zugewiesen wurde, wenn eine vom Betriebssystem zugewiesene Adresse abgerufen 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, unbenutzten Port nehmen.
server.listen(() => {
console.log('opened server on', server.address());
});
server.address()
gibt null
zurück, bevor das Ereignis 'listening'
ausgegeben wurde oder nach dem Aufruf von server.close()
.
server.close([callback])
Hinzugefügt in: v0.1.90
callback
<Funktion> Wird aufgerufen, wenn der Server geschlossen wird.- Gibt zurück: <net.Server>
Hindert den Server daran, neue Verbindungen anzunehmen, 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 ausgibt. Der optionale callback
wird aufgerufen, sobald das 'close'
-Ereignis eintritt. Im Gegensatz zu diesem Ereignis wird es mit einem Error
als einzigem 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
<Funktion>- Gibt zurück: <net.Server>
Asynchron die Anzahl der gleichzeitigen Verbindungen auf dem Server abrufen. Funktioniert, wenn Sockets an Forks gesendet wurden.
Callback sollte zwei Argumente err
und count
entgegennehmen.
server.listen()
Startet einen Server, der auf Verbindungen wartet. Ein net.Server
kann ein TCP- oder ein IPC-Server sein, je nachdem, worauf er wartet.
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 beginnt, auf Anfragen zu warten, wird das 'listening'
-Ereignis ausgelöst. Der letzte Parameter callback
wird als Listener für das 'listening'
-Ereignis hinzugefügt.
Alle listen()
-Methoden können einen backlog
-Parameter entgegennehmen, 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 server.listen()
-Methode kann erneut aufgerufen werden, wenn und nur wenn während des ersten server.listen()
-Aufrufs ein Fehler aufgetreten ist oder server.close()
aufgerufen wurde. Andernfalls wird ein ERR_SERVER_ALREADY_LISTEN
-Fehler ausgelöst.
Einer der häufigsten Fehler, der beim Lauschen auftritt, ist EADDRINUSE
. Dies geschieht, wenn bereits ein anderer Server auf dem angeforderten port
/path
/handle
wartet. Eine Möglichkeit, dies zu behandeln, besteht darin, es nach einer bestimmten Zeit erneut zu versuchen:
server.on('error', (e) => {
if (e.code === 'EADDRINUSE') {
console.error('Address in use, retrying...');
setTimeout(() => {
server.close();
server.listen(PORT, HOST);
}, 1000);
}
});
server.listen(handle[, backlog][, callback])
Hinzugefügt in: v0.5.10
handle
<Object>backlog
<number> Häufiger Parameter der Funktionenserver.listen()
callback
<Function>- Gibt zurück: <net.Server>
Startet einen Server, der auf Verbindungen über ein gegebenes handle
wartet, das 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 zugrunde liegenden _handle
-Element) oder ein Objekt mit einem fd
-Element sein, das ein gültiger Dateideskriptor ist.
Das Lauschen auf einen Dateideskriptor 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 | AbortSignal-Unterstützung 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> Häufiger Parameter der Funktionenserver.listen()
.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::
führt nicht dazu, dass0.0.0.0
gebunden wird. Standard:false
.reusePort
<boolean> Für TCP-Server ermöglicht die Einstellung vonreusePort
auftrue
, dass mehrere Sockets auf demselben Host sich an denselben Port binden. Eingehende Verbindungen werden vom Betriebssystem an abhörende Sockets verteilt. Diese Option ist nur auf einigen Plattformen verfügbar, 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 Pfade für IPC-Verbindungen identifizieren.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 genauso wie server.listen([port[, host[, backlog]]][, callback])
. Andernfalls, wenn path
angegeben ist, verhält es sich genauso wie server.listen(path[, backlog][, callback])
. Wenn keine von beiden angegeben ist, wird ein Fehler ausgelöst.
Wenn exclusive
false
(Standard) ist, verwenden Cluster-Worker dasselbe zugrunde liegende Handle, wodurch die Verbindungsverarbeitungsaufgaben gemeinsam genutzt werden können. Wenn exclusive
true
ist, wird das Handle nicht freigegeben, und der Versuch einer Portfreigabe führt zu einem Fehler. Ein Beispiel, das auf einem exklusiven Port lauscht, ist unten dargestellt.
server.listen({
host: 'localhost',
port: 80,
exclusive: true,
});
Wenn exclusive
true
ist und das zugrunde liegende Handle freigegeben ist, ist es möglich, dass mehrere Worker ein Handle mit unterschiedlichen Backlogs abfragen. In diesem Fall wird das erste backlog
verwendet, das an den Master-Prozess übergeben wird.
Das Starten eines IPC-Servers als Root kann dazu führen, dass der Serverpfad für nicht privilegierte Benutzer unzugä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 auf Verbindungen hören soll. Siehe Identifizieren von Pfaden für IPC-Verbindungen.backlog
<number> Häufig verwendeter Parameter vonserver.listen()
-Funktionen.callback
<Function>.- Gibt zurück: <net.Server>
Startet einen IPC-Server, der auf Verbindungen am angegebenen path
wartet.
server.listen([port[, host[, backlog]]][, callback])
Hinzugefügt in: v0.1.90
port
<number>host
<string>backlog
<number> Häufig verwendeter Parameter vonserver.listen()
-Funktionen.callback
<Function>.- Gibt zurück: <net.Server>
Startet einen TCP-Server, der auf Verbindungen am angegebenen port
und host
wartet.
Wenn port
ausgelassen wird oder 0 ist, weist das Betriebssystem einen beliebigen ungenutzten Port zu, der mit server.address().port
abgerufen werden kann, nachdem das 'listening'
-Ereignis ausgelöst wurde.
Wenn host
ausgelassen wird, akzeptiert der Server Verbindungen an der unspezifizierten IPv6-Adresse (::
), wenn IPv6 verfügbar ist, oder an der unspezifizierten IPv4-Adresse (0.0.0.0
) andernfalls.
In den meisten Betriebssystemen kann das Abhören der unspezifizierten IPv6-Adresse (::
) dazu führen, dass der net.Server
auch auf die unspezifizierte IPv4-Adresse (0.0.0.0
) hört.
server.listening
Hinzugefügt in: v5.7.0
- <boolean> Gibt an, ob der Server auf Verbindungen wartet oder nicht.
server.maxConnections
[Verlauf]
Version | Änderungen |
---|---|
v21.0.0 | Das Setzen von maxConnections auf 0 verwirft alle eingehenden Verbindungen. 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 einen Kindprozess 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 Clustermodus wirksam.
server.ref()
Hinzugefügt in: v0.9.1
- Gibt zurück: <net.Server>
Das Gegenteil von unref()
. Der Aufruf von ref()
auf einem zuvor unref
ed Server verhindert nicht, dass das Programm beendet wird, wenn dies der einzige verbleibende Server ist (das Standardverhalten). Wenn der Server ref
ed ist, hat der erneute Aufruf von ref()
keine Auswirkung.
server.unref()
Hinzugefügt in: v0.9.1
- Gibt zurück: <net.Server>
Der Aufruf von unref()
auf einem Server ermöglicht es dem Programm, zu beenden, wenn dies der einzige aktive Server im Event-System ist. Wenn der Server bereits unref
ed ist, hat der erneute 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 Streaming-IPC-Endpunkts (verwendet Named Pipes unter Windows und Unix-Domain-Sockets ansonsten). Es ist auch ein EventEmitter
.
Ein net.Socket
kann vom Benutzer erstellt und direkt verwendet werden, um mit einem Server zu interagieren. Zum Beispiel 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. Zum Beispiel wird er an die Listener eines ['connection'
]-Ereignisses](/de/api/net#event-connection) übergeben, das auf einem net.Server
ausgelöst wird, sodass der Benutzer ihn verwenden kann, um mit dem Client zu interagieren.
new net.Socket([options])
[Verlauf]
Version | Änderungen |
---|---|
v15.14.0 | Unterstützung für AbortSignal wurde hinzugefügt. |
v12.10.0 | Option onread 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 automatisch die schreibbare Seite, wenn die lesbare Seite endet. Siehenet.createServer()
und das'end'
Ereignis für Details. Standard:false
.fd
<number> Falls angegeben, umschließt ein bestehender Socket mit dem gegebenen Dateideskriptor, andernfalls wird ein neuer Socket erstellt.onread
<Object> Falls angegeben, werden eingehende Daten in einem einzelnenbuffer
gespeichert und an den bereitgestelltencallback
übergeben, wenn Daten auf dem Socket ankommen. Dies führt dazu, dass die Streaming-Funktionalität keine Daten bereitstellt. Der Socket emittiert Ereignisse wie üblich wie'error'
,'end'
und'close'
. Methoden wiepause()
undresume()
verhalten sich ebenfalls wie erwartet.buffer
<Buffer> | <Uint8Array> | <Function> Entweder ein wiederverwendbarer Speicherbereich zur Speicherung eingehender Daten oder eine Funktion, die einen solchen zurückgibt.callback
<Function> Diese Funktion wird für jeden Chunk eingehender Daten aufgerufen. Es werden zwei Argumente an sie übergeben: die Anzahl der inbuffer
geschriebenen Bytes und eine Referenz aufbuffer
. Gib von dieser Funktionfalse
zurück, um den Socket implizit zupause()
zu veranlassen. Diese Funktion wird im globalen Kontext ausgeführt.readable
<boolean> Erlaube Lesevorgänge auf dem Socket, 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> Erlaube Schreibvorgänge auf dem Socket, wenn einfd
übergeben wird, andernfalls ignoriert. Standard:false
.
Gibt zurück: <net.Socket>
Erstellt ein neues Socket-Objekt.
Der neu erstellte Socket kann entweder ein TCP-Socket oder ein Streaming-IPC-Endpunkt sein, je nachdem, womit er sich connect()
verbindet.
Ereignis: 'close'
Hinzugefügt in: v0.1.90
hadError
<boolean>true
, wenn der Socket einen Übertragungsfehler hatte.
Wird ausgelöst, sobald der Socket vollständig geschlossen wurde. Das Argument hadError
ist ein boolescher Wert, der angibt, ob der Socket aufgrund eines Übertragungsfehlers geschlossen wurde.
Ereignis: 'connect'
Hinzugefügt in: v0.1.90
Wird ausgelöst, wenn eine Socketverbindung erfolgreich hergestellt wurde. Siehe net.createConnection()
.
Ereignis: 'connectionAttempt'
Hinzugefügt in: v21.6.0, v20.12.0
ip
<string> Die IP, zu der der Socket eine Verbindung aufzubauen versucht.port
<number> Der Port, zu dem der Socket eine Verbindung aufzubauen versucht.family
<number> Die Familie der IP. Dies kann6
für IPv6 oder4
für IPv4 sein.
Wird ausgelöst, wenn ein neuer Verbindungsversuch gestartet wird. Dies kann mehrmals ausgelöst werden, wenn der Algorithmus zur automatischen Auswahl der Familie in socket.connect(options)
aktiviert ist.
Ereignis: 'connectionAttemptFailed'
Hinzugefügt in: v21.6.0, v20.12.0
ip
<string> Die IP, zu der der Socket eine Verbindung aufzubauen versuchte.port
<number> Der Port, zu dem der Socket eine Verbindung aufzubauen versuchte.family
<number> Die Familie der IP. Dies kann6
für IPv6 oder4
für IPv4 sein.error
<Error> Der Fehler, der mit dem Fehlschlag verbunden ist.
Wird ausgelöst, wenn ein Verbindungsversuch fehlgeschlagen ist. Dies kann mehrmals ausgelöst werden, wenn der Algorithmus zur automatischen Auswahl der Familie in socket.connect(options)
aktiviert ist.
Ereignis: 'connectionAttemptTimeout'
Hinzugefügt in: v21.6.0, v20.12.0
ip
<string> Die IP, zu der der Socket versucht hat, eine Verbindung herzustellen.port
<number> Der Port, zu dem der Socket versucht hat, eine Verbindung herzustellen.family
<number> Die Familie der IP. Sie kann6
für IPv6 oder4
für IPv4 sein.
Wird ausgelöst, wenn ein Verbindungsversuch fehlgeschlagen ist. Dies wird nur (und möglicherweise mehrmals) ausgelöst, wenn der Familien-Autoauswahlalgorithmus in socket.connect(options)
aktiviert ist.
Ereignis: 'data'
Hinzugefügt in: v0.1.90
Wird ausgelöst, wenn Daten empfangen werden. Das Argument data
ist ein Buffer
oder String
. Die Codierung 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 ausgelöst, 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 ausgelöst, 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 er seine ausstehende Schreibwarteschlange ausgeschrieben hat. Wenn allowHalfOpen
jedoch auf true
gesetzt ist, wird 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ücksenden).
Ereignis: 'error'
Hinzugefügt in: v0.1.90
Wird ausgelöst, wenn ein Fehler auftritt. Das 'close'
-Ereignis wird direkt im Anschluss an dieses Ereignis aufgerufen.
Ereignis: 'lookup'
[Historie]
Version | Änderungen |
---|---|
v5.10.0 | Der host -Parameter wird jetzt unterstützt. |
v0.11.3 | Hinzugefügt in: v0.11.3 |
Wird nach dem Auflösen des Hostnamens, aber vor dem Verbinden, ausgelöst. 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.
Ereignis: 'ready'
Hinzugefügt in: v9.11.0
Wird ausgelöst, wenn ein Socket bereit zur Verwendung ist.
Wird unmittelbar nach 'connect'
ausgelöst.
Ereignis: 'timeout'
Hinzugefügt in: v0.1.90
Wird ausgelöst, wenn für den Socket aufgrund von Inaktivität ein Timeout eintritt. Dies dient nur zur Benachrichtigung, dass der Socket im Leerlauf war. Der Benutzer muss die Verbindung manuell schließen.
Siehe auch: socket.setTimeout()
.
socket.address()
[Historie]
Version | Änderungen |
---|---|
v18.4.0 | Die family -Eigenschaft gibt jetzt einen String anstelle einer Zahl zurück. |
v18.0.0 | Die family -Eigenschaft gibt jetzt eine Zahl anstelle eines Strings zurück. |
v0.1.90 | Hinzugefügt in: v0.1.90 |
- Gibt zurück: <Object>
Gibt die gebundene address
, den family
-Namen der Adresse 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 Familienauswahlalgorithmus in socket.connect(options)
aktiviert ist, und es handelt sich um ein Array der Adressen, die versucht wurden.
Jede Adresse ist ein String im Format $IP:$PORT
. Wenn die Verbindung erfolgreich war, ist die letzte Adresse die, mit der der Socket derzeit 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 Zeichen an, die für das Schreiben gepuffert werden. Der Puffer kann Zeichenfolgen enthalten, deren Länge nach der Kodierung noch nicht bekannt ist. Diese Zahl ist also 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 loszulegen. Der Computer kann nicht immer mit der Datenmenge mithalten, die an einen Socket geschrieben wird. Die Netzwerkverbindung könnte einfach zu langsam sein. Node.js stellt die an einen Socket geschriebenen Daten intern in eine Warteschlange und sendet sie über die Leitung, wenn dies möglich ist.
Die Folge dieser internen Pufferung ist, dass der Speicher wachsen kann. Benutzer, bei denen eine große oder wachsende bufferSize
auftritt, sollten versuchen, die Datenflüsse 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.- Gibt zurück: <net.Socket> Den Socket selbst.
Diese Funktion ist asynchron. Wenn die Verbindung hergestellt ist, wird das 'connect'
-Ereignis ausgelöst. Wenn es ein Problem beim Verbinden gibt, wird anstelle eines 'connect'
-Ereignisses ein 'error'
-Ereignis ausgelöst, wobei der Fehler an den 'error'
-Listener übergeben wird. Der letzte Parameter connectListener
wird, falls angegeben, einmal als Listener für das 'connect'
-Ereignis hinzugefügt.
Diese Funktion sollte nur verwendet werden, um einen Socket nach dem Auslösen von 'close'
wiederzuverbinden, da dies sonst zu undefiniertem Verhalten führen kann.
socket.connect(options[, connectListener])
[Verlauf]
Version | Änderungen |
---|---|
v19.4.0 | Der Standardwert für die Option autoSelectFamily kann zur Laufzeit mithilfe von 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. Das CLI-Flag --enable-network-family-autoselection wurde in --network-family-autoselection umbenannt. Der alte Name ist jetzt ein Alias, wird aber nicht 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 wurde standardmäßig `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 einmal als Listener für das'connect'
-Ereignis hinzugefügt.- Gibt zurück: <net.Socket> Den 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, wenn Sie einen benutzerdefinierten Socket implementieren.
Für TCP-Verbindungen sind folgende options
verfügbar:
autoSelectFamily
<boolean>: Wenn auftrue
gesetzt, aktiviert dies einen Algorithmus zur automatischen Familienerkennung, der Abschnitt 5 von RFC 8305 lose implementiert. Die an die Suche übergebene Optionall
wird auftrue
gesetzt, und die Sockets versuchen, sich nacheinander mit allen erhaltenen IPv6- und IPv4-Adressen zu verbinden, bis eine Verbindung hergestellt ist. Zuerst wird die erste zurückgegebene AAAA-Adresse, dann die erste zurückgegebene A-Adresse, dann die zweite zurückgegebene AAAA-Adresse usw. ausprobiert. Jedem Verbindungsversuch (aber dem letzten) wird die Zeitspanne eingeräumt, die durch die OptionautoSelectFamilyAttemptTimeout
angegeben wird, bevor ein Timeout auftritt und die nächste Adresse ausprobiert wird. Wird ignoriert, wenn die Optionfamily
nicht0
ist oderlocalAddress
gesetzt ist. Verbindungsfehler werden nicht ausgegeben, wenn mindestens eine Verbindung erfolgreich ist. Wenn alle Verbindungsversuche fehlschlagen, wird ein einzelnesAggregateError
mit allen fehlgeschlagenen Versuchen ausgegeben. Standard:net.getDefaultAutoSelectFamily()
.autoSelectFamilyAttemptTimeout
<number>: Die Zeitspanne in Millisekunden, die gewartet werden soll, bis ein Verbindungsversuch abgeschlossen ist, bevor die nächste Adresse ausprobiert wird, wenn die OptionautoSelectFamily
verwendet wird. Wenn eine positive Ganzzahl kleiner als10
eingestellt ist, 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 Verbindungsaufbau, ähnlich wie beisocket.setKeepAlive()
. Standard:false
.keepAliveInitialDelay
<number> Wenn auf eine positive Zahl gesetzt, wird die anfängliche Verzögerung festgelegt, bevor die erste Keepalive-Sonde auf einem inaktiven Socket gesendet wird. Standard:0
.localAddress
<string> Lokale Adresse, von der sich der Socket verbinden soll.localPort
<number> Lokaler Port, von dem sich der Socket verbinden soll.lookup
<Function> Benutzerdefinierte Suchfunktion. Standard:dns.lookup()
.noDelay
<boolean> Wenn auftrue
gesetzt, wird die Verwendung des Nagle-Algorithmus unmittelbar nach dem Aufbau des Sockets deaktiviert. 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 TCP-spezifischen Optionen oben ignoriert.
socket.connect(path[, connectListener])
path
<string> Pfad, zu dem sich der Client verbinden soll. Siehe Pfade für IPC-Verbindungen identifizieren.connectListener
<Function> Häufiger Parameter dersocket.connect()
Methoden. Wird einmal als Listener für das'connect'
Ereignis hinzugefügt.- Gibt zurück: <net.Socket> Der Socket selbst.
Initiiert eine IPC-Verbindung auf dem angegebenen Socket.
Alias für 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> Häufiger Parameter dersocket.connect()
Methoden. Wird einmal als Listener für das'connect'
Ereignis hinzugefügt.- Gibt zurück: <net.Socket> Der Socket selbst.
Initiiert eine TCP-Verbindung auf dem angegebenen Socket.
Alias für 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 der Socket verbunden ist, dann wird es auf false
gesetzt und das 'connect'
Ereignis wird ausgelöst. Beachten Sie, dass der socket.connect(options[, connectListener])
Callback ein Listener für das 'connect'
Ereignis ist.
socket.destroy([error])
Hinzugefügt in: v0.1.90
error
<Object>- Gibt zurück: <net.Socket>
Stellt sicher, dass keine weiteren E/A-Aktivitäten auf diesem Socket stattfinden. Zerstört den Stream und schließt die Verbindung.
Weitere Details finden Sie unter writable.destroy()
.
socket.destroyed
- <boolean> Gibt an, ob die Verbindung zerstört wurde oder nicht. Sobald eine Verbindung zerstört wurde, können keine weiteren Daten über sie übertragen werden.
Weitere Details finden Sie unter writable.destroyed
.
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, wenn datastring
ist. Standard:'utf8'
.callback
<Function> Optionaler Callback, wenn der Socket fertig ist.- Gibt zurück: <net.Socket> Der Socket selbst.
Schließt den Socket halbseitig. D.h. es sendet ein FIN-Paket. Es ist möglich, dass der Server immer noch einige Daten sendet.
Weitere Details finden Sie unter writable.end()
.
socket.localAddress
Hinzugefügt in: v0.9.6
Die String-Darstellung der lokalen IP-Adresse, mit der sich der Remote-Client verbindet. Wenn beispielsweise ein Server auf '0.0.0.0'
lauscht und sich ein Client auf '192.168.1.1'
verbindet, wäre der Wert von socket.localAddress
'192.168.1.1'
.
socket.localPort
Hinzugefügt in: v0.9.6
Die numerische Darstellung des lokalen Ports. Zum Beispiel 80
oder 21
.
socket.localFamily
Hinzugefügt in: v18.8.0, v16.18.0
Die String-Darstellung der lokalen IP-Familie. 'IPv4'
oder 'IPv6'
.
socket.pause()
- Gibt zurück: <net.Socket> Der Socket selbst.
Pausiert das Lesen von Daten. Das heißt, 'data'
-Ereignisse werden nicht ausgelöst. Nützlich, um einen Upload zu drosseln.
socket.pending
Hinzugefügt in: v11.2.0, v10.16.0
Dies ist true
, wenn der Socket noch nicht verbunden ist, entweder weil .connect()
noch nicht aufgerufen wurde oder weil er sich noch im Verbindungsprozess befindet (siehe socket.connecting
).
socket.ref()
Hinzugefügt in: v0.9.1
- Gibt zurück: <net.Socket> Der Socket selbst.
Das Gegenteil von unref()
. Der Aufruf von ref()
auf einem zuvor unref
ed Socket verhindert nicht, dass das Programm beendet wird, wenn es der einzige verbleibende Socket ist (das Standardverhalten). Wenn der Socket ref
ed ist, hat ein erneuter Aufruf von ref
keine Auswirkung.
socket.remoteAddress
Hinzugefügt in: v0.5.10
Die String-Darstellung der Remote-IP-Adresse. Zum Beispiel '74.125.127.100'
oder '2001:4860:a005::68'
. Der Wert kann undefined
sein, wenn der Socket zerstört wird (z. B. wenn der Client die Verbindung getrennt hat).
socket.remoteFamily
Hinzugefügt in: v0.11.14
Die String-Darstellung der Remote-IP-Familie. 'IPv4'
oder 'IPv6'
. Der Wert kann undefined
sein, wenn der Socket zerstört wird (z. B. wenn der Client die Verbindung getrennt hat).
socket.remotePort
Hinzugefügt in: v0.5.10
Die numerische Darstellung des Remote-Ports. Zum Beispiel 80
oder 21
. Der Wert kann undefined
sein, wenn der Socket zerstört ist (z. B. wenn der Client die Verbindung getrennt hat).
socket.resetAndDestroy()
Hinzugefügt in: v18.3.0, v16.17.0
- Gibt zurück: <net.Socket>
Schließt die TCP-Verbindung durch Senden eines RST-Pakets und zerstört den Stream. Wenn sich dieser TCP-Socket im Verbindungsstatus befindet, sendet er ein RST-Paket und zerstört diesen TCP-Socket, sobald er verbunden ist. Andernfalls wird socket.destroy
mit einem ERR_SOCKET_CLOSED
-Fehler aufgerufen. Wenn es sich nicht um einen TCP-Socket handelt (z. B. eine Pipe), wirft der Aufruf dieser Methode sofort einen ERR_INVALID_HANDLE_TYPE
-Fehler.
socket.resume()
- Gibt zurück: <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>- Gibt zurück: <net.Socket> Der Socket selbst.
Legt die Kodierung 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 | Es wurden neue Standardwerte für die Socket-Optionen TCP_KEEPCNT und TCP_KEEPINTVL hinzugefügt. |
v0.1.92 | Hinzugefügt in: v0.1.92 |
enable
<boolean> Standard:false
initialDelay
<number> Standard:0
- Gibt zurück: <net.Socket> Der Socket selbst.
Aktiviert/deaktiviert die Keep-Alive-Funktionalität und legt optional die anfängliche Verzögerung fest, bevor die erste Keep-Alive-Sonde an einem inaktiven Socket gesendet wird.
Setzen Sie initialDelay
(in Millisekunden), um die Verzögerung zwischen dem letzten empfangenen Datenpaket und der ersten Keep-Alive-Sonde festzulegen. Wenn Sie 0
für initialDelay
festlegen, bleibt der Wert gegenüber der Standardeinstellung (oder der vorherigen Einstellung) unverändert.
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
- Gibt zurück: <net.Socket> Der Socket selbst.
Aktiviert/deaktiviert die Verwendung von Nagle's Algorithmus.
Wenn eine TCP-Verbindung erstellt wird, ist Nagle's Algorithmus standardmäßig aktiviert.
Nagle's Algorithmus verzögert Daten, bevor sie über das Netzwerk gesendet werden. Er versucht, den Durchsatz auf Kosten der Latenz zu optimieren.
Die Übergabe von true
für noDelay
oder das Weglassen eines Arguments deaktiviert Nagle's Algorithmus für den Socket. Die Übergabe von false
für noDelay
aktiviert Nagle's Algorithmus.
socket.setTimeout(timeout[, callback])
[Verlauf]
Version | Änderungen |
---|---|
v18.0.0 | Die Übergabe eines ungültigen Callbacks an das Argument callback wirft jetzt ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK . |
v0.1.90 | Hinzugefügt in: v0.1.90 |
timeout
<number>callback
<Function>- Gibt zurück: <net.Socket> Der Socket selbst.
Setzt den Socket so, dass er nach timeout
Millisekunden Inaktivität auf dem Socket ein Timeout auslöst. Standardmäßig haben net.Socket
keinen Timeout.
Wenn ein Idle-Timeout ausgelöst wird, empfängt der Socket ein 'timeout'
-Ereignis, aber die Verbindung wird nicht unterbrochen. 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 durch socket.setTimeout()
festgelegt. Es ist undefined
, wenn kein Timeout festgelegt wurde.
socket.unref()
Hinzugefügt in: v0.9.1
- Gibt zurück: <net.Socket> Das Socket selbst.
Der 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> Wird nur verwendet, wenndata
einstring
ist. Standard:utf8
.callback
<Function>- Gibt zurück: <boolean>
Sendet Daten über das Socket. Der zweite Parameter gibt die Kodierung im Fall eines Strings an. Standardmäßig wird die UTF8-Kodierung verwendet.
Gibt true
zurück, wenn die gesamten Daten erfolgreich in den Kernel-Puffer geschrieben wurden. Gibt false
zurück, wenn die Daten ganz oder teilweise im Benutzerspeicher zwischengespeichert wurden. 'drain'
wird ausgegeben, wenn der Puffer wieder frei ist.
Der optionale callback
-Parameter wird ausgeführt, wenn die Daten endgültig ausgeschrieben sind, was möglicherweise nicht sofort geschieht.
Weitere Informationen finden Sie in der Writable
-Stream-Methode write()
.
socket.readyState
Hinzugefügt in: v0.5.0
Diese Eigenschaft stellt den Status der Verbindung als Zeichenkette dar.
- Wenn der Stream sich im Verbindungsaufbau befindet, 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 nicht lesbar und beschreibbar ist, ist er
writeOnly
.
net.connect()
Aliase für 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 für net.createConnection(options[, connectListener])
.
net.connect(path[, connectListener])
Hinzugefügt in: v0.1.90
path
<string>connectListener
<Function>- Gibt zurück: <net.Socket>
Alias für 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 für net.createConnection(port[, host][, connectListener])
.
net.createConnection()
Eine Factory-Funktion, 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 ausgelöst. Der letzte Parameter connectListener
wird, falls angegeben, einmal 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 dennew net.Socket([options])
-Aufruf als auch an diesocket.connect(options[, connectListener])
-Methode übergeben.connectListener
<Function> Gemeinsamer Parameter dernet.createConnection()
-Funktionen. Falls angegeben, wird er einmal als Listener für das'connect'
-Ereignis auf dem zurückgegebenen Socket hinzugefügt.- Gibt zurück: <net.Socket> Der neu erstellte Socket, der zum Starten der Verbindung verwendet wird.
Verfügbare Optionen finden Sie unter new net.Socket([options])
und socket.connect(options[, connectListener])
.
Zusätzliche Optionen:
timeout
<number> Wenn gesetzt, wirdsocket.setTimeout(timeout)
aufgerufen, nachdem der Socket erstellt wurde, aber bevor er die Verbindung startet.
Im Folgenden finden Sie ein Beispiel für einen Client des Echo-Servers, der im Abschnitt net.createServer()
beschrieben ist:
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 Option port
und onread
verwendet. In diesem Fall wird die Option onread
nur verwendet, um new net.Socket([options])
aufzurufen, und die Option port
wird verwendet, um socket.connect(options[, connectListener])
aufzurufen.
import net from 'node:net';
import { Buffer } from 'node:buffer';
net.createConnection({
port: 8124,
onread: {
// Verwendet einen 4KiB Buffer für jeden Lesevorgang vom Socket wieder.
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 jeden Lesevorgang vom Socket wieder.
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 sich der Socket verbinden soll. Wird ansocket.connect(path[, connectListener])
übergeben. Siehe Pfade für IPC-Verbindungen identifizieren.connectListener
<Function> Gemeinsamer Parameter dernet.createConnection()
-Funktionen, ein "once"-Listener für das'connect'
-Ereignis auf dem initiierenden Socket. Wird ansocket.connect(path[, connectListener])
übergeben.- Gibt zurück: <net.Socket> Der neu erstellte Socket, der zum Starten der Verbindung verwendet wird.
Initiiert eine IPC-Verbindung.
Diese Funktion erstellt einen neuen net.Socket
mit allen auf Standardwerte gesetzten Optionen, initiiert sofort eine Verbindung mit socket.connect(path[, connectListener])
und gibt dann den net.Socket
zurück, der die Verbindung startet.
net.createConnection(port[, host][, connectListener])
Hinzugefügt in: v0.1.90
port
<number> Port, zu dem sich der Socket verbinden soll. Wird ansocket.connect(port[, host][, connectListener])
übergeben.host
<string> Host, zu dem sich der Socket verbinden soll. Wird ansocket.connect(port[, host][, connectListener])
übergeben. Standard:'localhost'
.connectListener
<Function> Gemeinsamer Parameter dernet.createConnection()
-Funktionen, ein "once"-Listener für das'connect'
-Ereignis auf dem initiierenden Socket. Wird ansocket.connect(port[, host][, connectListener])
übergeben.- Gibt zurück: <net.Socket> Der neu erstellte Socket, der zum Starten der Verbindung verwendet wird.
Initiiert eine TCP-Verbindung.
Diese Funktion erstellt einen neuen net.Socket
mit allen auf Standardwerte gesetzten Optionen, initiiert sofort eine Verbindung mit socket.connect(port[, host][, connectListener])
und gibt dann den net.Socket
zurück, der die Verbindung startet.
net.createServer([options][, connectionListener])
[Historie]
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
<Object>allowHalfOpen
<boolean> Wenn auffalse
gesetzt, beendet der Socket automatisch die beschreibbare Seite, wenn die lesbare Seite endet. Standard:false
.highWaterMark
<number> Überschreibt optional diereadableHighWaterMark
undwritableHighWaterMark
allernet.Socket
s. Standard: Siehestream.getDefaultHighWaterMark()
.keepAlive
<boolean> Wenn auftrue
gesetzt, aktiviert dies die Keep-Alive-Funktionalität auf dem Socket unmittelbar nach dem Empfang einer neuen eingehenden Verbindung, ähnlich wie insocket.setKeepAlive()
durchgeführt. Standard:false
.keepAliveInitialDelay
<number> Wenn auf eine positive Zahl gesetzt, legt dies die anfängliche Verzögerung fest, bevor die erste Keepalive-Prüfung auf einem inaktiven Socket gesendet wird. Standard:0
.noDelay
<boolean> Wenn auftrue
gesetzt, deaktiviert dies die Verwendung des Nagle-Algorithmus unmittelbar nach dem Empfang einer neuen eingehenden Verbindung. Standard:false
.pauseOnConnect
<boolean> Gibt an, ob der Socket bei eingehenden Verbindungen pausiert werden soll. Standard: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 Adresse, die mit der Blockliste verglichen wird, die Adresse des Proxys oder die von der NAT angegebene ist.
connectionListener
<Function> Wird automatisch als Listener für das'connection'
-Ereignis festgelegt.Gibt zurück: <net.Server>
Erstellt einen neuen TCP- oder IPC-Server.
Wenn allowHalfOpen
auf true
gesetzt ist, sendet der Server das Ende der Übertragung erst dann zurück, wenn socket.end()
explizit aufgerufen wird, wenn das andere Ende des Sockets das Ende der Übertragung signalisiert. Wenn beispielsweise im Kontext von TCP ein FIN-Paket empfangen wird, wird ein FIN-Paket nur dann zurückgesendet, wenn socket.end()
explizit aufgerufen wird. Bis dahin ist die Verbindung halb geschlossen (nicht lesbar, aber immer noch beschreibbar). Weitere Informationen finden Sie im 'end'
-Ereignis und in RFC 1122 (Abschnitt 4.2.2.13).
Wenn pauseOnConnect
auf true
gesetzt ist, wird der Socket, der jeder eingehenden Verbindung zugeordnet ist, pausiert, und es werden keine Daten von seinem Handle gelesen. Dies ermöglicht das Übertragen von Verbindungen zwischen Prozessen, ohne dass Daten vom ursprünglichen Prozess gelesen werden. Um mit dem Lesen von Daten von einem pausierten Socket zu beginnen, rufen Sie socket.resume()
auf.
Der Server kann ein TCP-Server oder ein IPC-Server sein, je nachdem, worauf er listen()
ist.
Hier ist ein Beispiel für einen TCP-Echo-Server, der auf Verbindungen an Port 8124 wartet:
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 hören:
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
Ermittelt den aktuellen Standardwert der Option autoSelectFamily
von socket.connect(options)
. Der anfängliche Standardwert ist true
, es sei denn, die Kommandozeilenoption --no-network-family-autoselection
wird angegeben.
- Rückgabe: <boolean> Der aktuelle Standardwert der Option
autoSelectFamily
.
net.setDefaultAutoSelectFamily(value)
Hinzugefügt in: v19.4.0
Legt den Standardwert der Option autoSelectFamily
von socket.connect(options)
fest.
value
<boolean> Der neue Standardwert. Der anfängliche Standardwert isttrue
, es sei denn, die Kommandozeilenoption--no-network-family-autoselection
wird angegeben.
net.getDefaultAutoSelectFamilyAttemptTimeout()
Hinzugefügt in: v19.8.0, v18.18.0
Ermittelt den aktuellen Standardwert der Option autoSelectFamilyAttemptTimeout
von socket.connect(options)
. Der anfängliche Standardwert ist 250
oder der Wert, der über die Kommandozeilenoption --network-family-autoselection-attempt-timeout
angegeben wurde.
- Rückgabe: <number> Der aktuelle Standardwert der Option
autoSelectFamilyAttemptTimeout
.
net.setDefaultAutoSelectFamilyAttemptTimeout(value)
Hinzugefügt in: v19.8.0, v18.18.0
Legt den Standardwert der Option autoSelectFamilyAttemptTimeout
von socket.connect(options)
fest.
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 Wert, der über die Kommandozeilenoption--network-family-autoselection-attempt-timeout
angegeben wurde.
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 punktdezimaler 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 punktdezimaler 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