Skip to content

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:

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

IPC-Unterstützung

[Verlauf]

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

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

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 (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 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 zur 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'));  // 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

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 der value eine 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 entweder als IPv4- oder IPv6-String. Standard: '127.0.0.1', wenn family 'ipv4' ist; '::', wenn family 'ipv6' ist.
    • family <string> Entweder 'ipv4' oder 'ipv6'. Standard: '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 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 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 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

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

js
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

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

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:

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:

js
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

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.0Die Option reusePort wird unterstützt.
v15.6.0AbortSignal-Unterstützung 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> Häufiger Parameter der Funktionen server.listen().
    • 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 :: führt nicht dazu, dass 0.0.0.0 gebunden wird. Standard: false.
    • reusePort <boolean> Für TCP-Server ermöglicht die Einstellung von reusePort auf true, 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, wenn port 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.

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

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 Verbindungen am angegebenen path wartet.

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

Hinzugefügt in: v0.1.90

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.0Das Setzen von maxConnections auf 0 verwirft alle eingehenden Verbindungen. 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 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

Das Gegenteil von unref(). Der Aufruf von ref() auf einem zuvor unrefed Server verhindert nicht, dass das Programm beendet wird, wenn dies der einzige verbleibende Server ist (das Standardverhalten). Wenn der Server refed ist, hat der erneute Aufruf von ref() keine Auswirkung.

server.unref()

Hinzugefügt in: v0.9.1

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

Klasse: net.Socket

Hinzugefügt in: v0.3.4

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.0Unterstützung für AbortSignal wurde hinzugefügt.
v12.10.0Option onread 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 automatisch die schreibbare Seite, wenn die lesbare Seite endet. Siehe net.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 einzelnen buffer gespeichert und an den bereitgestellten callback ü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 wie pause() und resume() 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 in buffer geschriebenen Bytes und eine Referenz auf buffer. Gib von dieser Funktion false zurück, um den Socket implizit zu pause() zu veranlassen. Diese Funktion wird im globalen Kontext ausgeführt.

    • readable <boolean> Erlaube Lesevorgänge auf dem Socket, 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> Erlaube Schreibvorgänge auf dem Socket, wenn ein fd ü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 kann 6 für IPv6 oder 4 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 kann 6 für IPv6 oder 4 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 kann 6 für IPv6 oder 4 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.0Der host-Parameter wird jetzt unterstützt.
v0.11.3Hinzugefügt in: v0.11.3

Wird nach dem Auflösen des Hostnamens, aber vor dem Verbinden, ausgelöst. Nicht anwendbar auf Unix-Sockets.

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.0Die family-Eigenschaft gibt jetzt einen String anstelle einer Zahl zurück.
v18.0.0Die family-Eigenschaft 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 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:

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.0Der 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.0Der 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.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 wurde standardmäßig `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, wenn Sie einen benutzerdefinierten Socket implementieren.

Für TCP-Verbindungen sind folgende options verfügbar:

  • autoSelectFamily <boolean>: Wenn auf true gesetzt, aktiviert dies einen Algorithmus zur automatischen Familienerkennung, der Abschnitt 5 von RFC 8305 lose implementiert. Die an die Suche übergebene Option all wird auf true 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 Option autoSelectFamilyAttemptTimeout angegeben wird, bevor ein Timeout auftritt und die nächste Adresse ausprobiert wird. Wird ignoriert, wenn die Option family nicht 0 ist oder localAddress gesetzt ist. Verbindungsfehler werden nicht ausgegeben, wenn mindestens eine Verbindung erfolgreich ist. Wenn alle Verbindungsversuche fehlschlagen, wird ein einzelnes AggregateError 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 Option autoSelectFamily verwendet wird. Wenn eine positive Ganzzahl kleiner als 10 eingestellt ist, 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 Verbindungsaufbau, ähnlich wie bei socket.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 auf true 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:

socket.connect(path[, connectListener])

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

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

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

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

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

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

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

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

socket.setEncoding([encoding])

Hinzugefügt in: v0.1.90

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.0Es wurden neue Standardwerte für die Socket-Optionen TCP_KEEPCNT und TCP_KEEPINTVL 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 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

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.0Die Übergabe eines ungültigen Callbacks an das Argument callback wirft jetzt ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK.
v0.1.90Hinzugefügt in: v0.1.90

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.

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 durch socket.setTimeout() festgelegt. Es ist undefined, wenn kein Timeout festgelegt wurde.

socket.unref()

Hinzugefügt in: v0.9.1

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

Hinzugefügt in: v0.7.0

Alias für net.createConnection(options[, connectListener]).

net.connect(path[, connectListener])

Hinzugefügt in: v0.1.90

Alias für net.createConnection(path[, connectListener]).

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

Hinzugefügt in: v0.1.90

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:

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

net.createConnection(options[, connectListener])

Hinzugefügt in: v0.1.90

Verfügbare Optionen finden Sie unter 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 ist:

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

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

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

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

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

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 hören:

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

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

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 punktdezimaler 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