次のように単純な node.js TCP ソケット サーバーを作成したとしましょう。
var server = net.createServer(function (socket) {
socket.end("goodbye\n");
});
// listen on port 80, like a webserver would, and configured to accept connections to multiple hosts, ie test.example.com, sdfsdfsdf.example.com, example2.com.
server.listen(80, function() {
address = server.address();
console.log("opened server on %j", address);
});
server.on('connection', function(socket) {
//log('connection data', socket);
log('CONNECTED SOCKET DATA', socket.address());
log('CONNECTED LOCAL, %s:%s', socket.localAddress, socket.localPort);
log('CONNECTED %s:%s', socket.remoteAddress, socket.remotePort);
//How do I find the server hostname that the client connected to?
// eg test.example.com or example2.com
});
TCPconnection
が作成されたら、クライアントが接続しようとしたホスト名を解析したいと思います。ただし、socket
はこの情報を持っていないようです。
以下は、前のコードを実行したときに得られたものです (削除された IP アドレス)
CONNECTED SOCKET DATA { port: 80, family: 2, address: '[SERVER IP ADDRESS]' }
CONNECTED LOCAL, undefined:undefined
CONNECTED [CLIENT IP ADDRESS]:13263
nodejsソケットのドキュメントを調べましたが、ホスト名に関連するものは見つかりません。ドキュメントには、実際にはsocket.localAddress
IP アドレスになると記載されていますが、私の場合は役に立たなくなります。