[英]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.