College'da Node.js çalışıyorum ve ilk defa bu tür bir programlama dilini öğreniyorum. Sohbet sunucusu girişimde bazı hatalar var. Bir istemciyi sunucuya bağlamaya çalıştığımda, bağlantı hemen kapanır ve 'Geçersiz olmayan dizge/arabellek yığını' hatası görüntülenir. Bazı ekran görüntüleri yüklerim ve neyin yanlış olduğunu kontrol edebilirsiniz, çünkü bir süredir düşünüyorum ve herhangi bir çözüm bulamıyorum. JavaScriptgeçersiz olmayan dize/tampon öbek Node.js
Kodum:
var net = require('net');
var s = require
var sockets = [];
var nombres = [];
var nombresUsados = [];
console.log("Se ha iniciado el sevidor");
var server = net.createServer(function(socket){
socket.push(socket);
nombres.push("Cliente:" + sockets.indexOf(socket));
nombresUsados.push("Cliente:" + socket.indexOf(socket));
console.log("Cliente aceptado, nick:" + nombres[sockets.indexOf(socket)]);
socket.write("Bienvenido" + nombres[sockets.indexOf(socket)]+ "\n");
![enter image description here][2]socket.on('data', function(d){
var entrada = d.toString();
var UsuarioUnico = entrada.match(/^msg/);
var cambiarNick = entrada.match(/^nick/);
var quit = entrada.match(/^quit/);
if(cambiarNick == "nick"){
var repetido = 0;
var nombresSinNick = entrada.replace(cambiarNick, '');
for(var i = nombres.length-1; i<=0; i--){
if(nombresSinNick.substring(0,nombres[i].toString().length) == nombres[i].toString()){
socket.write("KO, escoja otro nombre\n")
repetido = 1;
}
};
if(repetido == 0){
nombres[sockets.indexOf(socket)] == nombresSinNick.trim();
process.on('uncaughtException', function(err){
socket.write("KO\n");
});
socket.write("OK. " + nombres[sockets.indexOf(socket)] + "\n");
console.log(nombresUsados[sockets.indexOf(socket)]) + "su nombre ha sido cambiado por:" + nombres[sockets.indexOf(socket)];
nombresUsados[sockets.indexOf(socket)] = nombresSinNick.trim();
}
}
else if (UsuarioUnico = "msg"){
var nombresSinMsg = entrada.replace(UsuarioUnico, '');
var encontrado = 0;
for(var i = nombres.length-1; i<=0; i--){
if(nombresSinMsg.substring(0,nombres[i].toString().length) == nombres[i].toString()){
var mensaje = nombresSinMsg.replace(nombres[i], '');
}
};
socket.on('end', function() { // CALLBACK: desconexión de cliente
if(quit == 'quit'){
var i = nombres[sockets.indexOf(socket)];
sockets.splice(i, 1);
console.log("Ha salido el usuario:" + nombres[sockets.indexOf(socket)]);
}
});
}
});
});
server.listen(9000);
teşekkürler, bu hataydı. –
Merhaba @PabloMateos, bu ya da herhangi bir cevap sorunuzun çözülüp çözülmediğine karar verirseniz, lütfen [onaylama] 'yı (http://meta.stackexchange.com/q/5234/179419) onay işaretini tıklayın. Bu, bir çözüm bulduğunuz ve hem yanıtlayıcıya hem de kendinize bir takım saygınlık kazandıran daha geniş bir topluluğa işaret eder. Bunu yapmak için bir zorunluluk yoktur. –