Skip to content

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:

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

IPC-Unterstützung

[Verlauf]

VersionÄnderungen
v20.8.0Unterstü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.:

js
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

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

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 zwischen 0 und 32 sein. Für IPv6 muss dies zwischen 0 und 128 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

Gibt true zurück, wenn die angegebene IP-Adresse mit einer der dem BlockList hinzugefügten Regeln übereinstimmt.

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

console.log(blockList.check('123.123.123.123')) // 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

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 der value ein net.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', wenn family 'ipv4' ist; '::', wenn family 'ipv6' ist.
    • family <string> Einer von 'ipv4' oder 'ipv6'. Standardwert: 'ipv4'.
    • flowlabel <number> Ein IPv6-Flow-Label, das nur verwendet wird, wenn family 'ipv6' ist.
    • port <number> Ein IP-Port.

socketaddress.address

Hinzugefügt in: v15.14.0, v14.18.0

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

socketaddress.port

Hinzugefügt in: v15.14.0, v14.18.0

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 wird undefined zurückgegeben.

Klasse: net.Server

Hinzugefügt in: v0.1.90

Diese Klasse wird verwendet, um einen TCP- oder IPC-Server zu erstellen.

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

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

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.0Die Eigenschaft family gibt jetzt einen String anstelle einer Zahl zurück.
v18.0.0Die Eigenschaft family gibt jetzt eine Zahl anstelle eines Strings zurück.
v0.1.90Hinzugefü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.

js
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

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

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:

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:

js
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

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.0Die Option reusePort wird unterstützt.
v15.6.0Unterstützung für AbortSignal wurde hinzugefügt.
v11.4.0Die Option ipv6Only wird unterstützt.
v0.11.14Hinzugefügt in: v0.11.14
  • options <Object> Erforderlich. Unterstützt die folgenden Eigenschaften:

    • backlog <number> Üblicher Parameter der server.listen()-Funktionen.
    • exclusive <boolean> Standard: false
    • host <string>
    • ipv6Only <boolean> Für TCP-Server deaktiviert die Einstellung von ipv6Only auf true die Dual-Stack-Unterstützung, d. h. die Bindung an Host :: bewirkt nicht, dass 0.0.0.0 gebunden wird. Standard: false.
    • reusePort <boolean> Für TCP-Server ermöglicht die Einstellung von reusePort auf true 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, wenn port 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.

js
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:

js
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

Startet einen IPC Server, der auf dem angegebenen path auf Verbindungen lauscht.

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

Hinzugefügt in: v0.1.90

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.0Das Setzen von maxConnections auf 0 bricht alle eingehenden Verbindungen ab. Zuvor wurde es als Infinity interpretiert.
v0.2.0Hinzugefü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

Das Gegenteil von unref(). Ein Aufruf von ref() auf einem zuvor unrefed Server lässt das Programm nicht beenden, wenn es der einzige verbleibende Server ist (das Standardverhalten). Wenn der Server referenziert (refed) ist, hat ein erneuter Aufruf von ref() keine Auswirkung.

server.unref()

Hinzugefügt in: v0.9.1

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 unrefed ist, hat ein erneuter Aufruf von unref() keine Auswirkung.

Klasse: net.Socket

Hinzugefügt in: v0.3.4

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.0Unterstützung für AbortSignal hinzugefügt.
v12.10.0onread-Option hinzugefügt.
v0.3.4Hinzugefügt in: v0.3.4
  • options <Object> Verfügbare Optionen sind:

    • allowHalfOpen <boolean> Wenn auf false gesetzt, beendet der Socket die beschreibbare Seite automatisch, wenn die lesbare Seite beendet wird. Siehe net.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 einzigen buffer gespeichert und an den angegebenen callback ü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 wie pause() und resume() 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 in buffer geschriebenen Bytes und eine Referenz auf buffer. Geben Sie false von dieser Funktion zurück, um den Socket implizit zu pause(). Diese Funktion wird im globalen Kontext ausgeführt.

    • readable <boolean> Lesezugriffe auf den Socket erlauben, wenn ein fd ü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 ein fd ü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. Kann 6 für IPv6 oder 4 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. Kann 6 für IPv6 oder 4 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. Kann 6 für IPv6 oder 4 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.0Der Parameter host wird jetzt unterstützt.
v0.11.3Hinzugefügt in: v0.11.3

Wird nach der Auflösung des Hostnamens, aber vor der Verbindung ausgegeben. Nicht anwendbar auf Unix-Sockets.

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.0Die Eigenschaft family gibt jetzt einen String statt einer Zahl zurück.
v18.0.0Die Eigenschaft family gibt jetzt eine Zahl statt eines Strings zurück.
v0.1.90Hinzugefügt in: v0.1.90

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:

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.0Der 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.0Der 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.0Die Option autoSelectFamily wurde hinzugefügt.
v17.7.0, v16.15.0Die Optionen noDelay, keepAlive und keepAliveInitialDelay werden jetzt unterstützt.
v6.0.0Die 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.0Die Option hints wird jetzt unterstützt.
v0.1.90Hinzugefügt in: v0.1.90

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 auf true gesetzt, aktiviert dies einen Algorithmus zur automatischen Familienerkennung, der lose Abschnitt 5 von RFC 8305 implementiert. Die an lookup übergebene Option all wird auf true 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 Option autoSelectFamilyAttemptTimeout angegebene Zeit, bevor ein Timeout auftritt und die nächste Adresse versucht wird. Wird ignoriert, wenn die Option family nicht 0 ist oder wenn localAddress gesetzt ist. Verbindungsfehler werden nicht emittiert, wenn mindestens eine Verbindung erfolgreich ist. Wenn alle Verbindungsversuche fehlschlagen, wird ein einzelner AggregateError 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 Option autoSelectFamily verwendet wird. Wenn ein positiver Integer kleiner als 10 gesetzt wird, wird stattdessen der Wert 10 verwendet. Standard: net.getDefaultAutoSelectFamilyAttemptTimeout().
  • family <number>: Version des IP-Stacks. Muss 4, 6 oder 0 sein. Der Wert 0 gibt an, dass sowohl IPv4- als auch IPv6-Adressen zulässig sind. Standard: 0.
  • hints <number> Optionale dns.lookup() Hinweise.
  • host <string> Host, mit dem sich der Socket verbinden soll. Standard: 'localhost'.
  • keepAlive <boolean> Wenn auf true gesetzt, aktiviert dies die Keep-Alive-Funktionalität auf dem Socket unmittelbar nach dem Herstellen der Verbindung, ähnlich wie in socket.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 auf true 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:

socket.connect(path[, connectListener])

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

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

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

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()

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

Gegenteil von unref(). Ein Aufruf von ref() auf einem zuvor unrefed Socket verhindert, dass das Programm beendet wird, wenn es das einzige verbleibende Socket ist (das Standardverhalten). Wenn das Socket refed 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

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()

Setzt das Lesen nach einem Aufruf von socket.pause() fort.

socket.setEncoding([encoding])

Hinzugefügt in: v0.1.90

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.0Neue Standardwerte für die Socket-Optionen TCP_KEEPCNT und TCP_KEEPINTVL wurden hinzugefügt.
v0.1.92Hinzugefügt in: v0.1.92

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

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.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v0.1.90Hinzugefügt in: v0.1.90

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.

js
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

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 unrefed ist, hat ein erneuter Aufruf von unref() keine Auswirkung.

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

Hinzugefügt in: v0.1.90

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])

Hinzugefügt in: v0.7.0

Alias zu net.createConnection(options[, connectListener]).

net.connect(path[, connectListener])

Hinzugefügt in: v0.1.90

Alias zu net.createConnection(path[, connectListener]).

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

Hinzugefügt in: v0.1.90

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:

Die Funktion net.connect() ist ein Alias für diese Funktion.

net.createConnection(options[, connectListener])

Hinzugefügt in: v0.1.90

Für verfügbare Optionen siehe new net.Socket([options]) und socket.connect(options[, connectListener]).

Zusätzliche Optionen:

Im Folgenden finden Sie ein Beispiel für einen Client des Echo-Servers, der im Abschnitt net.createServer() beschrieben wird:

js
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')
})
js
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:

js
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]).

js
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))
    },
  },
})
js
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

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

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.0Die Option highWaterMark wird jetzt unterstützt.
v17.7.0, v16.15.0Die Optionen noDelay, keepAlive und keepAliveInitialDelay werden jetzt unterstützt.
v0.5.0Hinzugefügt in: v0.5.0
  • options <Objekt>

    • allowHalfOpen <boolean> Wenn auf false gesetzt, beendet der Socket die beschreibbare Seite automatisch, wenn die lesbare Seite beendet wird. Standardwert: false.
    • highWaterMark <number> Überschreibt optional alle readableHighWaterMark und writableHighWaterMark von net.Socket. Standardwert: Siehe stream.getDefaultHighWaterMark().
    • keepAlive <boolean> Wenn auf true gesetzt, aktiviert es die Keep-Alive-Funktionalität auf dem Socket unmittelbar nach dem Empfang einer neuen eingehenden Verbindung, ähnlich wie in socket.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 auf true 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:

js
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')
})
js
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:

bash
telnet localhost 8124

Um auf dem Socket /tmp/echo.sock zu lauschen:

js
server.listen('/tmp/echo.sock', () => {
  console.log('server bound')
})

Verwenden Sie nc, um eine Verbindung zu einem Unix-Domain-Socket-Server herzustellen:

bash
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 ist true, 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 als 10 ist, wird stattdessen der Wert 10 verwendet. Der anfängliche Standardwert ist 250 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.

js
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.

js
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.

js
net.isIPv6('::1') // gibt true zurück
net.isIPv6('fhqwhgads') // gibt false zurück