sockets - 为什么在 'end' 事件上未定义 socket.remoteAddress?

标签 sockets node.js

我有一个简单的 TCP 服务器,如下所示:

var net = require('net');
var PORT = 6346;

var server = net.createServer(function(socket) {

    socket.on('connect', function() {
        console.log('Client connected: ' + socket.remoteAddress);
        socket.write('Welcome to the server!\r\n');
    });

    socket.on('end', function() {
        console.log('Client disconnected: ' + socket.remoteAddress);
    });

    socket.on('error', function() {
        console.log('Client error: ' + socket.remoteAddress);
    });

    socket.on('timeout', function() {
        console.log('Client timed out:' + socket.remoteAddress);
    });


}).listen(PORT);

当我连接到服务器时,我看到预期的 Client connected: 127.0.0.1 但当我断开连接时,我看到 Client disconnected: undefined。为什么未定义 socket.remoteAddress 以及如何在断开连接时记录客户端的 IP?

最佳答案

问题是socket断开后,某些属性(如remoteAddress)不再可用!

您可以通过用您自己的对象包装套接字,或者在连接时在其他地方跟踪该远程地址来解决这个问题。 (求关闭。)

关于sockets - 为什么在 'end' 事件上未定义 socket.remoteAddress?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12444598/

相关文章:

c# 如何建立UDP套接字连接

sockets - zmq轮询器如何工作?

Node.js Express 3.x 将变量传递给 View

javascript - Node JS : How to open one route within another

mysql - ROLLBACK 不会回滚事务 [NodeJS、MySQL]

node.js - 如何使用 Websocket 构建可扩展的实时聊天消息传递?

C—— socket 。客户端 : connect: No such file or directory

java - 套接字文件传输 : Receiver stuck in reading from buffer/writing to storage

node.js - 无法升级 Node ,因此无法在 ubuntu16.04LTS 上安装 npm 和 @angular/cli

node.js - Node js同步请求代码不起作用