【发布时间】:2017-12-21 09:05:00
【问题描述】:
所以我采用了以下代码https://gist.github.com/tedmiston/5935757 示例并对其稍作修改,以便客户端将数据写入服务器。这应该是可行的,因为客户端套接字确实支持写入。在我的一个用例中,客户端将大量数据从客户端发送到服务器,在这种情况下我收到 ECONNRESET 错误。附上客户端和服务器sn-ps。我想知道是否有人看到了这一点,以及他们是否知道幕后发生了什么问题。
这是我的客户的副本:
var net = require('net');
var client = new net.Socket({writeable: true}); //writeable true does not appear to help
client.on('close', function() {
console.log('Connection closed');
});
client.on('error', function(err) {
console.error('Connection error: ' + err);
console.error(new Error().stack);
});
client.connect(5900, '127.0.0.1', function() {
var count = 0;
console.log('Connected');
for(var i = 0; i < 100000; i++) {
client.write('' + i + '');
//bufferSize does not seem to be an issue
//console.info(client.bufferSize);
}
});
和我的服务器:
var net = require('net');
var count = 0;
var server = net.createServer(function(socket) {
socket.pipe(socket); //With this uncommented I get an ECONNRESET exception after 14299 writes with it commented it hangs after 41020 writes
socket.on('data', function(data) {
console.info(count++); //This makes it occur sooner
//count++;
//maxConnections is not the issue
//server.getConnections(function(err, count) {
//console.info('count = ' + count);
//});
});
socket.on('close', function() {
console.info('Socket close');
});
socket.on('error', function(err) {
console.error('Socket error: ' + err + ', count = ' + count);
console.error(new Error().stack);
});
});
server.listen(5900, '127.0.0.1');
【问题讨论】: