断开连接后访问套接字对象

时间:2012-12-09 06:21:31

标签: javascript node.js tcp

以下是一个简单的Node.js tcp服务器。

var net = require('net');

var conn = [];

var server = net.createServer(function(client) {//'connection' listener
    var i = conn.push(client) - 1;
    //console.log('[conn',i,']', client.remoteAddress, ':', client.remotePort);
    console.log('[disc]', conn[i].remoteAddress, ':', conn[i].remotePort);

    client.on('end', function() {
        console.log('[disc]', conn[i].remoteAddress, ':', conn[i].remotePort);
    });

    client.on('data', function(msg) {
        console.log('[data]', msg.toString());
    })

    client.write('hello\r\n');
    //client.pipe(client);
});

server.listen(8080);

当客户端连接,发送或断开连接时,它将打印有关客户端的信息。但是,仅当客户端断开连接时,它才会打印undefined而不是套接字信息。例如:

[conn] 127.0.0.1 : 52711
[data] 127.0.0.1 : 52711 world!
[disc] undefined : undefined

为什么会这样?这是因为当它关闭时套接字被破坏了吗?我需要知道关闭插座的信息。

1 个答案:

答案 0 :(得分:2)

断开连接的套接字没有远程端点,因此没有远程地址或远程端口。套接字没有被破坏,它就不再连接了。如果在断开套接字后需要知道远程地址和端口,则需要自己跟踪它。