Node.jsでUDP通信する
以下のサイトを参考にして実際にNode.jsでUDP通信を行ってみました。
dgramを使うと簡単にUDP通信できるようです。
1. 準備
以下のコマンドを入力します。
$ npm init $ npm install dgram
2. コード
UDP通信では明確にサーバとクライアントで区別できないため、今回は便宜上、片方をterminal_a、もう一方をterminal_bとします。以下のサンプルコードは同じPC上で動かすため、IPアドレスは同じで異なるPORTで通信を行います。
terminal-a.js
const dgram = require('dgram'); const PORT_A = 3002; const HOST_A = '127.0.0.1'; const PORT_B = 3003; const HOST_B = '127.0.0.1'; const socket = dgram.createSocket('udp4'); socket.on('listening', () => { const address = socket.address(); console.log('UDP socket listening on ' + address.address + ":" + address.port); }); socket.on('message', (message, remote) => { console.log(remote.address + ':' + remote.port +' - ' + message); socket.send(message, 0, message.length, PORT_B, HOST_B, (err, bytes) => { if (err) throw err; }); }); socket.bind(PORT_A, HOST_A);
terminal-b.js
const dgram = require('dgram'); const PORT_A = 3002; const HOST_A ='127.0.0.1'; const PORT_B = 3003; const HOST_B ='127.0.0.1'; const socket = dgram.createSocket('udp4'); var count = 0; setInterval(() => { count++; const data = Buffer.from(String(count)); socket.send(data, 0, data.length, PORT_A, HOST_A, (err, bytes) => { if (err) throw err; }); }, 500); socket.on('message', (message, remote) => { console.log(remote.address + ':' + remote.port +' - ' + message); }); socket.bind(PORT_B, HOST_B);
3. 実行
terminal-aとterminal-bを別々のコンソールを立ち上げて以下のコマンドをそれぞれ入力します。正常に動作していればterminal-bからintervalでカウントアップ文字列を送り、terminal-aでエコーバックしていることが確認できます。
$ node terminal-a.js
$ node terminal-b.js