nodejsを利用してUDPプログラミングを行います.

2954 ワード

nodejsを利用してUDPプログラミングを行います.
  • 、準備作業、モジュールの紹介
  • 、ケース
  • 、コード実現
  • クライアント
  • サーバ
  • 運転
  • 一、準備作業、モジュールの紹介
  • は、UDPパケットsocketの実現を提供するdgram(パケット)を導入する.モジュールはUDPパケットsocketの実現を提供します.詳しく知りたいのですが、このパッケージ文書の公式サイトをご覧ください.link.送信情報の関数紹介を実現します.
  • socket.send(msg[, offset, length][, port][, address][, callback])
    	msg  |  |  |        。
    	offset           buffer      。
    	length        。
    	port      。
    	address         IP   。
    	callback 
  • Readlineパッケージを導入し、nodejs入出力に使用します.
  • const readline = require('readline');
    //  interface  
    const rl = readline.createInterface({
      input: process.stdin,
      output: process.stdout
    });
    rl.question('      Node.js    ?', (answer) => {
      // answer         
      console.log(`        :${answer}`);
    //  interface     
      rl.close();
    });
    
    
  • は、関連関数
  • を呼び出します.
    二、ケース
    UDPに基づいて、クライアントにコンテンツクライアントを入力してサーバに送信する.サーバが受信して出力します.
    三、コード実現
    クライアント
    //  dgram、realine
    const dgram = require('dgram');
    const readline = require("readline");
    //  Socket    
    const clientSocket = dgram.createSocket('udp4');
    //   interface  
    const rl = readline.createInterface({  
        input: process.stdin,  
        output:process.stdout  
    });  
    var num = "123"; 
    console.log('         '); 
    
    //                 ,         
    //  await,         ,          ,           。
    
    //          
    function rejectNum() {
        return new Promise(resolve => {
            rl.on('line', function(line){  
                // num = line;
                resolve(line);  
                rl.close();  
            }); 
        });
    }
    //       ,          。
    async function read(){
          num = await rejectNum();
          //    
          clientSocket.send(num, 0, num.length, 7, 'localhost');
    }
    read();
    //   ,    
    clientSocket.on('error', function(err){
        console.log('error, msg - %s, stack - %s
    ', err.message, err.stack); }); // clientSocket.bind(4000); // //
    サーバ
    const dgram = require('dgram');
    const serverSocket = dgram.createSocket('udp4');
    serverSocket.on('message', (msg, rinfo)=>{
        console.log('recv %s(%d bytes) from client %s:%d
    ', msg, 1, rinfo.address, rinfo.port); console.log('Server : %s
    ', msg); }); serverSocket.on('error', function(err){ console.log('error, msg - %s, stack - %s
    ', err.message, err.stack); }); serverSocket.on('listening', function(){ console.log("server is listening on port 7."); }); serverSocket.bind(7); // //server is listening on port 7. //recv hi(1 bytes) from client 127.0.0.1:4000 //Server : hi
    実行
    クライアントファイル、サーバファイルはそれぞれ実行できます.