réseau node.js (net)

net (réseau)

net.Server classe #

Cette classe est utilisée pour créer un serveur TCP ou [IPC] [].

nouveau net.Server ([options] [, connectionListener]) #

  • Renvoie: <net.Server>

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

net.Serverest un [ EventEmitter] [] implémente les événements suivants:

événement 'close' #

Déclenché lorsque le serveur est fermé. Notez que s'il existe des connexions, cet événement ne sera déclenché qu'une fois toutes les connexions terminées.

événement 'connexion' #

Lorsqu'un nouvel établissement de connexion a déclenché socketune net.Socketinstance d'un objet.

événement 'erreur' #

Déclenché lorsqu'une erreur se produit. Contrairement à [ net.Socket] [], les 'close'événements [ ] [] ne continueront pas à se déclencher après le déclenchement de cet événement, sauf si [ server.close()] [] est appelé manuellement. server.listen()Exemple dans [ ] [].

événement «écoute» #

Appelé lorsque le service est lié [ server.listen()] [].

 

 

server.address () #

Si l'auditeur sur socket IP, l' adresse IP de liaison est retournée, les services de la famille d'adresse et le port ont signalé un système d'exploitation lorsque le système d'exploitation pour trouver une adresse assignée pour trouver le port spécifié est utile de revenir un. port, familyEt addressbien: { port: 12346, family: 'IPv4', address: '127.0.0.1' }le Objet

Pour les serveurs écoutant sur des canaux ou des sockets de domaine UNIX, le nom sera renvoyé sous forme de chaîne

Exemples:

const server = net.createServer((socket) => { socket.end('goodbye\n'); }).on('error', (err) => { // handle errors here throw err; }); // grab an arbitrary unused port. server.listen(() => { console.log('opened server on', server.address()); }); 

Seulement dans le 'listening'cas est déclenchée quand. Il peut être appeléserver.address()

server.close ([rappel]) #

  • Renvoie: <net.Server>

Arrêtez le serveur d'accepter l'établissement de nouvelles connexions et conservez les connexions existantes. Cette fonction est asynchrone. Lorsque toutes les connexions sont fermées et que le serveur répond à l' 'close'événement [ ] [], le serveur sera finalement fermé. L' 'close'option sera appelée une fois qu'elle se produira. Fonction de rappel. Contrairement à cet événement, si le serveur n'est pas allumé lorsqu'il est éteint, l'erreur sera utilisée comme seul paramètre.

De retour server.

server.connections #

Stabilité: 0 - Obsolète: utilisez server.getConnections() plutôt [ ] [].

Le nombre de connexions simultanées sur le serveur.

Lors de l' envoi d' un socketà utiliser child_process.fork()lorsque le processus enfant est créé, il sera de retour null. Pour interroger les fourches afin d'obtenir le nombre de connexions actives, vous pouvez utiliser asynchrone à la server.getConnections()place.

server.getConnections (rappel) #

  • Renvoie <net.Server>

Obtenez le nombre actuel de connexions simultanées du serveur de manière asynchrone. Fonctionne lorsque le socket est passé au processus enfant.

Les deux paramètres de la fonction de rappel sont err et count.

server.listen () #

Lancer un serveur écoute les connexions On net.Serverpeut être TCP ou [IPC] [] serveur, en fonction de ce qu'il écoute.

Paramètres possibles:

  • [ server.listen(handle[, backlog][, callback])] [ server.listen(handle)]
  • [ server.listen(options[, callback])] [ server.listen(options)]
  • [ server.listen(path[, backlog][, callback])] [ server.listen(path)] pour les serveurs [IPC] []
  • [ server.listen([port][, host][, backlog][, callback])] [ server.listen(port, host)] pour les serveurs TCP

Cette fonction est asynchrone. Lorsque le serveur commence à écouter, l' 'listening'événement [ ] [] sera déclenché. Le dernier paramètre callbacksera ajouté à [ 'listening'] [] événements d'écouteur.

Tous les listen()procédés peuvent transmettre un backlogparamètre pour spécifier la longueur maximale de la file d' attente pour être connecté. La longueur réelle de sysctl fourni par le système d' exploitation, par exemple, dans le Linux tcp_max_syn_backloget somaxconn. La valeur par défaut de ce paramètre est 511 (pas 512)

Description :

  • Tous les [ net.Socket] [] sont définis sur SO_REUSEADDR(voir [socket (7)] [])

  • server.listen()La méthode peut être appelée plusieurs fois. Chaque appel suivant rouvrira le serveur en utilisant les options qu'il propose.

L'une des erreurs les plus courantes lors de l'écoute est EADDRINUSE. En effet , un autre serveur est déjà à l' écoute de la demande port/ path/ handle. Une façon de gérer cette situation consiste à réessayer après un certain temps:

server.on('error', (e) => { if (e.code === 'EADDRINUSE') { console.log('Address in use, retrying...'); setTimeout(() => { server.close(); server.listen(PORT, HOST); }, 1000); } });



______________________________________________________________________________________________________________________



net.Socket classe #

Cette classe est une abstraction de TCP ou UNIX Socket (les canaux nommés sont utilisés sous Windows, tandis qu'UNIX utilise des sockets de domaine). L'un net.Socketest également un [flux duplex] [], il peut donc être lu ou écrit, et c'est également un [ EventEmitter] [].

net.SocketPeut être créé par l'utilisateur et communiquer directement avec le serveur. Par exemple, il est net.createConnection()renvoyé via [ ] [], afin que les utilisateurs puissent l'utiliser pour communiquer avec le serveur.

Lorsqu'une connexion est reçue, elle peut également être créée par Node.js et transmise à l'utilisateur. Par exemple, il est obtenu en surveillant net.Serverl' 'connection'événement [ ] [] déclenché sur un [ ] [], puis l'utilisateur peut l'utiliser pour communiquer avec le client.

nouveau net.Socket ([options]) #

Créez un objet socket.

  • options <Objet> Les options disponibles sont:
    • fd: <numéro> Si ce paramètre est spécifié, un descripteur de fichier donné est utilisé pour encapsuler un socket existant, sinon un nouveau socket sera créé.
    • allowHalfOpen <boolean> indique s'il faut autoriser les connexions TCP semi-ouvertes. Voir les événements [ net.createServer()] [] et [ 'end'] [] pour plus de détails . La valeur par défaut est false.
    • readable <Booléen> Lorsqu'il est passé le fdtemps autorisé à lire prise, sinon il est ignoré. Par défaut false.
    • writable <Booléen> Lorsqu'il est passé fdpour permettre la prise d' écriture, sinon il est ignoré. Par défaut false.
  • Renvoie: <net.Socket>

Le socket nouvellement créé peut être un socket TCP ou un flux de point de terminaison [IPC] [], selon ce à quoi il se connecte à [ connect()] [ socket.connect()].

événement 'close' #

  • had_error <boolean> True si le socket a des erreurs de transmission.

Cet événement est émis une fois que le socket est complètement fermé. Le paramètre had_errorest une valeur booléenne indiquant si la prise est fermée dépend de l'erreur de transmission.

événement 'connect' #

événement 'data' #

Cet événement est déclenché lors de la réception des données. dataIl est un paramètre Bufferou String. codage des données par le socket.setEncoding()réglage. (Voir la section [Flux lisible] [] pour plus d'informations.)

Notez que lors de l' Socketenvoi d' dataun événement lorsque, si aucun auditeur données seront perdues .

 

socket.write (données [, encodage] [, rappel]) #

Envoyer des données sur le socket. Le deuxième paramètre spécifie le codage de la chaîne - la valeur par défaut est le codage UTF8.

Si toutes les données sont correctement transférées dans le tampon du noyau, elles reviennent true. Si tout ou partie des données est en file d'attente au sein de l'utilisateur, retournez false. Lorsque le tampon est à nouveau libre, l' 'drain'événement [ ] [] sera déclenché .

Lorsque les données sont finalement écrites, option callbackparamètre sera exécutée - ne peut être exécutée immédiatement.

_________________________________________________________________

 

Le module net dans node.js nous fournit diverses interfaces pour la communication avec le serveur TCP et le client.

 

1. Créez un serveur et écoutez le port

const net = require ( 'net' );
 
//创建一个tcp服务
//参数一表示创建服务的一些配置
//参数二表示 事件 'connection' 监听回调函数
let server = net.createServer({
     //表示是否允许一个半开的TCP连接,默认为false
     allowHalfOpen: false,
     //一旦来了连接,是否暂停套接字,默认为false
     pauseOnConnect: false
});
 
server.listen(6666);
 
//一个新的连接建立时触发 'connection' 事件
server.on( 'connection' , function (socket) {
     //注意这里的socket是一个流,既可以读,也可以写
     //当我们监听 'data' 事件后,系统就会不断的从流中读取数据
     socket.on( 'data' , function (data) {
         console.log( '服务器接收到 : ' , data.toString());
     });
});
 
//服务调用 server.listen() 监听后就会触发该事件
server.on( 'listening' , function () {
     // address() 方法返回服务器地址信息对象
     let addr = server.address();
     console.log(`服务器监听 : ${addr.port} 端口`);
});
 
//服务关闭时触发,如果还有连接存在,则直到所有连接结束才会触发该事件
server.on( 'close' , function () {
     console.log( '服务关闭' );
});
 
//出现错误时触发
server.on( 'error' , function (err) {
     console.log(err);
});
 
___________________________________________________________
 
Nous pouvons également utiliser close () pour rejeter manuellement toutes les demandes de connexion. Lorsque tous les clients connectés sont fermés, le serveur se ferme automatiquement et déclenche l'événement «close».
const net = require ( 'net' );
 
let server = net.createServer();
server.listen(6666, '0.0.0.0' , function () {
     console.log( '服务器监听开始' );
});
 
//一个新的连接建立时触发 'connection' 事件
server.on( 'connection' , function (socket) {
     //获取当前服务器的连接数
     server.getConnections( function (error, count ) {
         console.log( '当前服务器的连接数 : ' , count );
     });
 
     socket.on( 'data' , function (data) {
         console.log( '服务器接收到 : ' , data.toString());
     });
});
 
server.on( 'close' , function () {
     console.log( '服务器被关闭' );
});
 
//5秒后手动关闭服务器,拒绝所有连接请求,已有连接全部关闭后,触发 'close' 事件
setTimeout( function () {
     server.close();
}, 5000);
 
 
 
________________________________________________________________________________________________________________
 
Deuxièmement, net.Socket est un objet de port de socket, est un flux lisible et inscriptible en duplex intégral
const net = require ( 'net' );
 
let server = net.createServer();
server.listen(6666, '0.0.0.0' , function () {
     console.log( '服务器监听开始' );
});
 
server.on( 'connection' , function (socket) {
     //获取当前服务器的连接数
     server.getConnections( function (error, count ) {
         console.log( '当前服务器的连接数 : ' , count );
     });
 
     console.log( '客户端信息 : ' , socket.address());
 
     //接收到数据时触发
     socket.on( 'data' , function (data) {
         //我们可以从流中读取数据
         console.log( '服务器接收到 : ' , data.toString());
         console.log( '累计接收的数据大小 : ' , socket.bytesRead);
         console.log( '累计发送的数据大小 : ' , socket.bytesWritten);
 
         //也可以向流中写入数据
         let flag = socket.write(`服务器向你发送 : ${data.toString()} \r\n`);
         console.log( 'flag : ' , flag);
         console.log( '当前已缓冲并等待写入流中的字节数 : ' , socket.bufferSize);
     });
 
     //连接关闭时触发
     socket.on( 'end' , function () {
         console.log( '客户端关闭' );
     });
 
     //连接完全关闭时触发
     socket.on( 'close' , function () {
         console.log( '客户端完全关闭' );
     });
 
     //发生错误时触发
     socket.on( 'error' , function (err) {
         console.log(err);
     });
});

Je suppose que tu aimes

Origine www.cnblogs.com/xtxt1127/p/12728315.html
conseillé
Classement