2016-03-31 29 views
0

nodejs'deki verileri alamıyorum, nodejs tarafından bir soket sunucusu oluşturmak istiyorum.Java soket istemcisi, Node Server

nodejs:

var sockets = []; 
net.createServer(function (client) { 
    sockets.push(client); 
    client.on('data', function (data) { 
     console.log(data); 
     client.write("you say:" + data); 
     setInterval(function(){ 
      client.write("Hell from server"); 
     }, 100);   
    }); 

    client.on('end', function() { 
     sockets.splice(sockets.indexOf(client), 1); 
    }) 

}).listen(PORT, HOST); 

java:

ve ben bazı basit kod yazmak i kod hem basit olduğunu düşünüyorum

Socket client; 
BufferedReader buf; 
... 
boolean flag = true; 
while (flag) { 
    String echo = buf.readLine(); 
    System.out.println(null == echo || "".equals(echo) ? "-null-" : echo); 
    if (null != echo && echo.contains("bye")) { 
     flag = false; 
    } 
} 

, ama ne zaman sunucuya istemci sonrası verileri, İstemci yalnızca bir mesaj alırken you say: xxx, aralık yazımı bir "arabellek" e yazılır Yine, istemci Hell from serverHell from serverHell from serverHell from serverHell from serveryou say:xxx gibi verileri alır. neden bu kadar

aynı sonucu i düğüm sunucu üzerinde kullanıcı tarayıcıyı yakalamaya çalışın:

var readline = require('readline'); 
var rl = readline.createInterface({ 
    input: process.stdin, 
    output: process.stdout 
}); 

rl.on('line', function (line) { 
    for (var i in sockets) { 
     if (sockets[i] && sockets[i].writable) { 
      sockets[i].write(line); 
     } 
    } 

istemci de veri alamaz.

Nasıl düzeltebilirim?

cevap

1

Hatları okuyorsunuz ancak çizgiler yazmıyorsunuz. Gönderilen her iletiye bir satır sonlandırıcı eklemeniz gerekir.

+0

Bana biraz öneride bulunabilir misiniz? – xuyanjun

+1

Yazım bittikten sonra os.EOL() ekleyin veya "\ r \ n" ifadesini ekleyin –