Node.jsでTCPサーバー・クライアントを作る

Javascript

Node.jsで簡単なTCPサーバーを作ってみました。
net.createServer()でサーバーインスタンスを生成し、コネクション確立/切断・データ受信・エラー等のイベントハンドラーを記述することになります。

  • TCPサーバー
 var net = require('net');
 var HOST = '127.0.0.1';
 var PORT = 3000;
 // サーバーインスタンスを生成し、リッスンします
 // net.createServer()に渡す関数は、'connection'イベントハンドラーになります。
 // コールバック関数が受け取るsockeオブジェクトは各接続ごとにユニークなものとなります。
 net.createServer(function(sock) {
     // TCPサーバーが接続しました。socketオブジェクトが自動的に割り当てられます。
     console.log('CONNECTED: ' + sock.remoteAddress +':'+ sock.remotePort);
     // 'data' イベントハンドラー
     sock.on('data', function(data) {
         console.log('DATA: ' + data );
         // ソケットに応答を書き込みます。クライアントはその書き込みを受信します。
         sock.write('RECIEVED');
     });
     // 'close'イベントハンドラー
     sock.on('close', function(had_error) {
         console.log('CLOSED. Had Error: ' + had_error);
     });
     // 'errer'イベントハンドラー
     sock.on('error', function(err) {
         console.log('ERROR: ' + err.stack);
     });
 }).listen(PORT, HOST);
 console.log('Server listening on ' + HOST +':'+ PORT);
  • TCPクライアント
 var net = require('net');
 var HOST = '127.0.0.1';
 var PORT = 3000;
 var client = new net.Socket();
 client.connect(PORT, HOST, function() {
     console.log('CONNECTED TO: ' + HOST + ':' + PORT);
     // クライアントが接続次第、ソケットにメッセージを書き込みます。サーバーはこのデータを受信します。 
     client.write('HELLO WORLD!');
 });
 // クライアント側ソケットの'data'イベントハンドラーを定義します。
 // dataはサーバーがこのソケットに送信した内容になります。
 client.on('data', function(data) {
     console.log('DATA: ' + data);
     // Close the client socket completely
     client.destroy();
 });
 // クライアント側'close' イベントハンドラーを定義します
 client.on('close', function() {
     console.log('Connection closed');
 });

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です