diff --git a/doc/api/net.markdown b/doc/api/net.markdown index dded333a1f..15cf8f452b 100644 --- a/doc/api/net.markdown +++ b/doc/api/net.markdown @@ -303,7 +303,11 @@ initialDelay will leave the value unchanged from the default The string representation of the remote IP address. For example, `'74.125.127.100'` or `'2001:4860:a005::68'`. -This member is only present in server-side connections. +#### socket.remotePort + +The numeric representation of the remote port. For example, +`80` or `21`. + #### Event: 'connect' diff --git a/lib/net.js b/lib/net.js index 3a6c72f2fb..da7dcc83bf 100644 --- a/lib/net.js +++ b/lib/net.js @@ -719,6 +719,8 @@ Socket.prototype.connect = function() { timers.active(self); self.type = addressType == 4 ? 'tcp4' : 'tcp6'; self.fd = socket(self.type); + self.remoteAddress = ip; + self.remotePort = port; doConnect(self, port, ip); } }); diff --git a/test/simple/test-net-remote-address-port.js b/test/simple/test-net-remote-address-port.js new file mode 100644 index 0000000000..1d4eafcea5 --- /dev/null +++ b/test/simple/test-net-remote-address-port.js @@ -0,0 +1,33 @@ +var common = require('../common'); +var assert = require('assert'); + +var net = require('net'); + +var conns = 0; + +var server = net.createServer(function(socket) { + conns++; + assert.equal('127.0.0.1', socket.remoteAddress); + socket.on('end', function() { + server.close(); + }); +}); + +server.listen(common.PORT, 'localhost', function() { + var client = net.createConnection(common.PORT, 'localhost'); + var client2 = net.createConnection(common.PORT); + client.on('connect', function() { + assert.equal('127.0.0.1', client.remoteAddress); + assert.equal(common.PORT, client.remotePort); + client.end(); + }); + client2.on('connect', function() { + assert.equal('127.0.0.1', client2.remoteAddress); + assert.equal(common.PORT, client2.remotePort); + client2.end(); + }); +}); + +process.exit(function() { + assert.equal(2, conns); +}); \ No newline at end of file