Re: note

技術的な知見やポエムなど役に立たない情報を書き連ねる場所

Node.jsでTCP通信する

f:id:hik0leaf:20190609130426p:plain

以下のサイトを参考にしてNode.jsでTCP通信を行ってみました。

blog.mitsuruog.info

nodeによるTCP通信は net モジュールを使用します。APIリファレンスは以下を参照ください。

Net | Node.js v12.4.0 Documentation

1. 準備

以下のコマンドを入力します。

$ npm install net

2. コード

server用とclient用のコードを以下のようにそれぞれ準備します。

server.js

const net = require('net');

const server = net.createServer(socket => {
    socket.on('data', data => {
        console.log(data + ' from ' + socket.remoteAddress + ':' + socket.remotePort);
        socket.write('server -> Repeating: ' + data);
    });

    socket.on('close', () => {
        console.log('client closed connection');
    });
}).listen(3000);

console.log('listening on port 3000');


client.js

const net = require('net');

const client = net.connect('3000', 'localhost', () => {
    console.log('connected to server');
    client.write('Hello World!');
});

client.on('data', data => {
    console.log('client-> ' + data);
    client.destroy();
});

client.on('close', () => {
    console.log('client-> connection is closed');
});

3. 実行

serverとclient別々のターミナルを立ち上げ、以下のコマンドを実行してメッセージが表示されれば成功です。

$ node server.js
$ node ceient.js

参考にしたサイトではクライアントからの標準入力をサーバでエコーバックし続けていますが、今回のこのコードはclientから「Hello World!」を送って返ってきたら destroy して接続を終了しています。