ぷろぐらむおいしいよ

技術ネタを適当に書いていきます。

node.jsでバイナリデータを送る

ぐぐってもそれっぽいのがあんまりなかったのでまとめとして。
node.js*1にはBufferという便利なクラスがあるのでそれを使う。

(Websocketでない)Socket通信でバイナリデータをechoサーバーに送って、返ってきたデータを表示するコード。

クライアント

var net = require('net');
 
var buffer = new Buffer(3);
buffer.writeUInt8(0x01, 0);
buffer.writeUInt8(0x02, 1);
buffer.writeUInt8(0x03, 2);

var client = net.connect(8000, "127.0.0.1", function() {
	client.write(buffer);
});

client.on('data', function(data) {
	for(var i=0;i<data.length;i++) {
		console.log(data[i]);
	}
	client.end();
});

こんな感じで、writeUInt8を使うと簡単に出来る。

サーバー

一応サーバーのほうも。

var net = require('net');

var server = net.createServer(function (socket) {
  socket.pipe(socket);
});

server.listen(8000, "127.0.0.1");

実行結果

1
2
3

*1:ここではv0.6.2を使っている