繁体   English   中英

为什么我在运行'net'模块node.js时遇到此错误

[英]Why am i getting this error running 'net' module node.js

我在6112上使用.net模块化和打开tcp端口。

var net = require('net');
    var server = net.createServer(function (socket) { //'connection' listener
    });
server.listen(6112, function () { //'listening' listener
    console.log('server started');
});

在同一台机器上,我在main中启动一个java套接字。

public static void main(String[] args) {
        // TODO Auto-generated method stub

        try {
            System.out.println("Connecting...");
            Socket socket = new Socket("localhost", 6112);
            System.out.println("Connected");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

我得到这个例外,

C:\Users\Mustafa\WebstormProjects\Node.Js>node hello.js
server started

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: read ECONNRESET
    at errnoException (net.js:884:11)
    at TCP.onread (net.js:539:19)

这是一个错误或什么的,因为如果我遇到这个错误,我将非常感谢。

我没有使用调试器的原因,因为Ryan在一年前说他自己,它仍然是shitt。

您需要侦听套接字上的错误。 Node有默认行为,当某些东西发生.emit('error') ,如果没有附加错误处理程序,它将throw错误,从而导致应用程序崩溃。

var server = net.createServer(function (socket) {
    socket.on('error', function(err){
        // Handle the connection error.
    });
});

您正在创建一个套接字并从中进行连接,但不是关闭它。 因此,当程序完成时,对于node.js,它看起来像是重置连接(突然关闭)。 调用socket.close(); 在节目结束之前。

您可以通过以下方式构建代码:

try {
    tryStatements      //your code that is causing exceptions
}
catch(exception){
    catchStatements    //handle caught exceptions
}
finally {
    finallyStatements  //execute it anyways
}

或者,如果您想从运行时捕获未捕获的异常,请使用此方法(主进程不会在异常时退出)

process.on('uncaughtException', function(err) {
    console.log('Caught exception: ' + err);
    console.log(err.stack);
});

问题出在java代码中,导致node.js在异常时退出。 所以一定要添加socket.close(); 以上只是node.js部分的错误处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM