net Node.js错误:读取ECONNRESET(在Windows上)

我正在尝试使用Node.js中的networking库来做简单的消息传递。 在Nodejs.org的例子中 ,它们提供了以下代码作为基本的回显服务器:

var net = require('net'); var server = net.createServer(function(c) { //'connection' listener console.log('server connected'); c.on('end', function() { console.log('server disconnected'); }); c.write('hello\r\n'); c.pipe(c); }); server.listen(8124, function() { //'listening' listener console.log('server bound'); }); 

以及所述服务器的客户端:

 var net = require('net'); var client = net.connect({port: 8124}, function() { //'connect' listener console.log('client connected'); client.write('world!\r\n'); }); client.on('data', function(data) { console.log(data.toString()); client.end(); }); client.on('end', function() { console.log('client disconnected'); }); 

上面的例子工作,但是,如果你删除client.end(); 从客户端代码并强制closures客户端上的脚本(模拟客户端崩溃)服务器崩溃以及错误:

 Error: read ECONNRESET at errnoException (net.js:904:11) at TCP.onread (net.js:558:19) 

我尝试用c.on("error",function(){})以及server.on('error', function (e) {});来捕获服务器代码中server.on('error', function (e) {}); 但在这两种情况下,服务器仍然崩溃时客户端断开连接,而不使用client.end()

检查这个错误的方法是什么,以便服务器执行一个console.log('connection reset by peer')而不是崩溃?

更新:我试过这个相同的代码在我的Linux机器上,它似乎工作得很好…所以为什么它在Linux中,但不是在Windows中工作?

你可以通过在你的'createServer'函数中添加这个代码来捕获这个错误:

 process.on('uncaughtException', function (err) { console.error(err.stack); console.log("Node NOT Exiting..."); });