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