簡體   English   中英

Java套接字客戶端無法從節點服務器接收數據

[英]Java socket client can't receive data from Node Server

我是nodejs的新手,我想通過nodejs創建一個套接字服務器。

我寫了一些簡單的代碼:

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

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;
    }
}

我認為這兩個代碼都是最簡單的,但是當客戶端將數據發布到服務器時,客戶端只收到一條消息, you say: xxx ,間隔寫入可能會寫入“緩沖​​區”,因為當客戶端再次發布數據時,客戶端會接收數據就像Hell from serverHell from serverHell from serverHell from serverHell from serveryou say:xxx 為什么會這樣呢?

當我嘗試在節點服務器上捕獲用戶掃描程序時,結果相同:

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);
        }
    }

客戶端也無法接收數據。

我該如何解決?

您正在閱讀台詞,但您沒有在寫台詞。 您需要為每個發送的消息添加一個行終止符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM