Add remoteAddress and remotePort for client TCP connections
authorBrian White <mscdex@mscdex.net>
Wed, 13 Apr 2011 16:19:15 +0000 (12:19 -0400)
committerRyan Dahl <ry@tinyclouds.org>
Wed, 13 Apr 2011 17:24:28 +0000 (10:24 -0700)
https://groups.google.com/d/topic/nodejs-dev/Asr87_YFSkg/discussion

doc/api/net.markdown
lib/net.js
test/simple/test-net-remote-address-port.js [new file with mode: 0644]

index dded333..15cf8f4 100644 (file)
@@ -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'
index 3a6c72f..da7dcc8 100644 (file)
@@ -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 (file)
index 0000000..1d4eafc
--- /dev/null
@@ -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