Node.js - Modulo Net

Node.js netviene utilizzato per creare sia server che client. Questo modulo fornisce un wrapper di rete asincrono e può essere importato utilizzando la seguente sintassi.

var net = require("net")

Metodi

Sr.No. Metodo e descrizione
1

net.createServer([options][, connectionListener])

Crea un nuovo server TCP. L'argomento connectionListener viene impostato automaticamente come listener per l'evento "connection".

2

net.connect(options[, connectionListener])

Un metodo di fabbrica, che restituisce un nuovo "net.Socket" e si connette all'indirizzo e alla porta forniti.

3

net.createConnection(options[, connectionListener])

Un metodo di fabbrica, che restituisce un nuovo "net.Socket" e si connette all'indirizzo e alla porta forniti.

4

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

Crea una connessione TCP alla porta sull'host. Se host viene omesso, verrà assunto "localhost". Il parametro connectListener verrà aggiunto come listener per l'evento "connect". È un metodo factory che restituisce un nuovo 'net.Socket'.

5

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

Crea una connessione TCP alla porta sull'host. Se host viene omesso, verrà assunto "localhost". Il parametro connectListener verrà aggiunto come listener per l'evento "connect". È un metodo factory che restituisce un nuovo 'net.Socket'.

6

net.connect(path[, connectListener])

Crea una connessione socket Unix al percorso. Il parametro connectListener verrà aggiunto come listener per l'evento "connect". È un metodo factory che restituisce un nuovo 'net.Socket'.

7

net.createConnection(path[, connectListener])

Crea una connessione socket Unix al percorso. Il parametro connectListener verrà aggiunto come listener per l'evento "connect". È un metodo factory che restituisce un nuovo 'net.Socket'.

8

net.isIP(input)

Verifica se l'input è un indirizzo IP. Restituisce 0 per le stringhe non valide, 4 per gli indirizzi IP versione 4 e 6 per gli indirizzi IP versione 6.

9

net.isIPv4(input)

Restituisce true se l'input è un indirizzo IP versione 4, altrimenti restituisce false.

10

net.isIPv6(input)

Restituisce true se l'input è un indirizzo IP versione 6, altrimenti restituisce false.

Classe - net.Server

Questa classe viene utilizzata per creare un server TCP o locale.

Metodi

Sr.No. Metodo e descrizione
1

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

Inizia ad accettare le connessioni sulla porta e sull'host specificati. Se l'host viene omesso, il server accetterà le connessioni dirette a qualsiasi indirizzo IPv4 (INADDR_ANY). Un valore di porta pari a zero assegnerà una porta casuale.

2

server.listen(path[, callback])

Avvia un server socket locale in ascolto delle connessioni sul percorso specificato.

3

server.listen(handle[, callback])

L'oggetto handle può essere impostato su un server o su un socket (qualsiasi cosa con un membro _handle sottostante) o su un oggetto {fd: <n>}. Ciò farà sì che il server accetti le connessioni sull'handle specificato, ma si presume che il descrittore di file o l'handle sia già stato associato a una porta o al socket di dominio. L'ascolto di un descrittore di file non è supportato su Windows.

4

server.listen(options[, callback])

Le proprietà della porta, dell'host e del backlog delle opzioni, così come la funzione di callback opzionale, si comportano come una chiamata a server.listen (port, [host], [backlog], [callback]). In alternativa, è possibile utilizzare l'opzione path per specificare un socket UNIX.

5

server.close([callback])

Infine viene chiuso quando tutte le connessioni sono terminate e il server emette un evento di "chiusura".

6

server.address()

Restituisce l'indirizzo associato, il nome della famiglia di indirizzi e la porta del server come riportato dal sistema operativo.

7

server.unref()

Chiamare unref su un server consentirà al programma di uscire se questo è l'unico server attivo nel sistema degli eventi. Se il server è già unrefd, chiamare nuovamente unref non avrà alcun effetto.

8

server.ref()

Al contrario di unref, la chiamata a ref su un server precedentemente unrefd non lascerà uscire il programma se è l'unico server rimasto (il comportamento predefinito). Se il server è refd, la chiamata di nuovo ref non avrà alcun effetto.

9

server.getConnections(callback)

Ottieni in modo asincrono il numero di connessioni simultanee sul server. Funziona quando i socket sono stati inviati ai fork. Il callback dovrebbe prendere due argomenti err e contare.

Eventi

Sr.No. Eventi e descrizione
1

listening

Emesso quando il server è stato associato dopo aver chiamato server.listen.

2

connection

Emesso quando viene stabilita una nuova connessione. Oggetto Socket, l'oggetto connessione è disponibile per il gestore eventi. Socket è un'istanza di net.Socket.

3

close

Emesso quando il server si chiude. Notare che se esistono connessioni, questo evento non viene emesso finché tutte le connessioni non sono terminate.

4

error

Emesso quando si verifica un errore. L'evento di "chiusura" verrà chiamato subito dopo questo evento.

Classe - net.Socket

Questo oggetto è un'astrazione di un socket TCP o locale. Le istanze net.Socket implementano un'interfaccia Stream duplex. Possono essere creati dall'utente e utilizzati come client (con connect ()) oppure possono essere creati da Node e passati all'utente tramite l'evento 'connection' di un server.

Eventi

net.Socket è un eventEmitter ed emette i seguenti eventi.

Sr.No. Eventi e descrizione
1

lookup

Emesso dopo aver risolto il nome host ma prima della connessione. Non applicabile ai socket UNIX.

2

connect

Emesso quando viene stabilita correttamente una connessione socket.

3

data

Emesso quando vengono ricevuti i dati. I dati dell'argomento saranno un buffer o una stringa. La codifica dei dati è impostata da socket.setEncoding ().

4

end

Emesso quando l'altra estremità del socket invia un pacchetto FIN.

5

timeout

Emesso se il socket va in timeout per inattività. Questo è solo per notificare che il socket è stato inattivo. L'utente deve chiudere manualmente la connessione.

6

drain

Emesso quando il buffer di scrittura diventa vuoto. Può essere utilizzato per limitare i caricamenti.

7

error

Emesso quando si verifica un errore. L'evento di "chiusura" verrà chiamato subito dopo questo evento.

8

close

Emesso quando la presa è completamente chiusa. L'argomento had_error è un booleano che indica se il socket è stato chiuso a causa di un errore di trasmissione.

Proprietà

net.Socket fornisce molte proprietà utili per ottenere un migliore controllo sulle interazioni dei socket.

Sr.No. Proprietà e descrizione
1

socket.bufferSize

Questa proprietà mostra il numero di caratteri attualmente memorizzati nel buffer da scrivere.

2

socket.remoteAddress

La rappresentazione di stringa dell'indirizzo IP remoto. Ad esempio, "74 .125.127.100" o "2001: 4860: a005 :: 68".

3

socket.remoteFamily

La rappresentazione di stringa della famiglia di IP remoto. "IPv4" o "IPv6".

4

socket.remotePort

La rappresentazione numerica della porta remota. Ad esempio, 80 o 21.

5

socket.localAddress

La rappresentazione di stringa dell'indirizzo IP locale su cui si connette il client remoto. Ad esempio, se stai ascoltando su "0.0.0.0" e il client si connette su "192.168.1.1", il valore sarà "192.168.1.1".

6

socket.localPort

La rappresentazione numerica della porta locale. Ad esempio, 80 o 21.

7

socket.bytesRead

La quantità di byte ricevuti.

8

socket.bytesWritten

La quantità di byte inviati.

Metodi

Sr.No. Metodo e descrizione
1

new net.Socket([options])

Costruisci un nuovo oggetto socket.

2

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

Apre la connessione per un dato socket. Se vengono forniti porta e host, il socket verrà aperto come socket TCP, se l'host viene omesso, verrà assunto localhost. Se viene fornito un percorso, il socket verrà aperto come socket Unix per quel percorso.

3

socket.connect(path[, connectListener])

Apre la connessione per un dato socket. Se vengono forniti porta e host, il socket verrà aperto come socket TCP, se l'host viene omesso, verrà assunto localhost. Se viene fornito un percorso, il socket verrà aperto come socket Unix per quel percorso.

4

socket.setEncoding([encoding])

Imposta la codifica per il socket come flusso leggibile.

5

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

Invia i dati sul socket. Il secondo parametro specifica la codifica nel caso di una stringa: il valore predefinito è la codifica UTF8.

6

socket.end([data][, encoding])

Chiude a metà il socket, ovvero invia un pacchetto FIN. È possibile che il server invii ancora alcuni dati.

7

socket.destroy()

Assicura che non si verifichi alcuna attività di I / O su questo socket. Necessario solo in caso di errori (parse error o così).

8

socket.pause()

Mette in pausa la lettura dei dati. Cioè, gli eventi "dati" non verranno emessi. Utile per rallentare un caricamento.

9

socket.resume()

Riprende la lettura dopo una chiamata per mettere in pausa ().

10

socket.setTimeout(timeout[, callback])

Imposta il socket su timeout dopo il timeout millisecondi di inattività sul socket. Per impostazione predefinita, net.Socket non ha un timeout.

11

socket.setNoDelay([noDelay])

Disabilita l'algoritmo Nagle. Per impostazione predefinita, le connessioni TCP utilizzano l'algoritmo Nagle, memorizzano i dati prima di inviarli. L'impostazione true per noDelay attiverà immediatamente i dati ogni volta che viene chiamato socket.write (). noDelay il valore predefinito è true.

12

socket.setKeepAlive([enable][, initialDelay])

Abilita / disabilita la funzionalità keep-alive e facoltativamente imposta il ritardo iniziale prima che il primo probe keepalive venga inviato su un socket inattivo. abilita i valori predefiniti su false.

13

socket.address()

Restituisce l'indirizzo associato, il nome della famiglia di indirizzi e la porta del socket come riportato dal sistema operativo. Restituisce un oggetto con tre proprietà, ad esempio {port: 12346, family: 'IPv4', address: '127.0.0.1'}.

14

socket.unref()

Chiamare unref su un socket consentirà al programma di uscire se questo è l'unico socket attivo nel sistema degli eventi. Se il socket è già unrefd, chiamare di nuovo unref non avrà alcun effetto.

15

socket.ref()

Al contrario di unref, chiamare ref su un socket precedentemente unrefd non lascerà il programma uscire se è l'unico socket rimasto (il comportamento predefinito). Se il socket è refd, la chiamata di ref non avrà alcun effetto.

Esempio

Crea un file js denominato server.js con il codice seguente:

File: server.js

var net = require('net');
var server = net.createServer(function(connection) { 
   console.log('client connected');
   
   connection.on('end', function() {
      console.log('client disconnected');
   });
   
   connection.write('Hello World!\r\n');
   connection.pipe(connection);
});

server.listen(8080, function() { 
   console.log('server is listening');
});

Ora esegui il server.js per vedere il risultato -

$ node server.js

Verifica l'output.

server is listening

Crea un file js denominato client.js con il codice seguente:

File: client.js

var net = require('net');
var client = net.connect({port: 8080}, function() {
   console.log('connected to server!');  
});

client.on('data', function(data) {
   console.log(data.toString());
   client.end();
});

client.on('end', function() { 
   console.log('disconnected from server');
});

Ora esegui client.js da un altro terminale per vedere il risultato -

$ node client.js

Verifica l'output.

connected to server!
Hello World!

disconnected from server

Verificare l'output sul terminale in cui è in esecuzione server.js.

server is listening
client connected
client disconnected