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