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'); });