1

下面是一个简单的 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

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

4

1 回答 1

2

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

于 2012-12-09T06:25:23.550 回答