通过套接字发送和接收数据:Node.JS服务器,Java客户端

时间:2020-03-29 20:15:30

标签: javascript java node.js sockets

我正在尝试将数据从Node JS网络服务器发送到Java应用程序。这是我的JS代码:

    var server = net.createServer(function (c) { //'connection' listener
    console.log('server connected');
    c.on('end', function () {
        console.log('server disconnected');
    });
    c.on('data', (d) => {
        console.log(data);
    });
    c.pipe(c);
    setInterval(() => {
        let obj = { "foo": "bar" };
        c.write(JSON.stringify(obj));
    }, 3000)
});
server.listen(58430, function () { //'listening' listener
    console.log('server bound');
}); 

所以我现在只是调试,并尝试间隔发送数据(foo:bar)。

这是我的Java端,循环运行:

        InputStreamReader inFromClient = new InputStreamReader(client.getInputStream());
        while (running.get()) {
            String data = Tools.ReadUntilNull(inFromClient);
            Log.debug("Received: " + data);
        }

其中“客户端”是侦听正确端口的套接字。 “ running”是一个真实的原子布尔。

Tools.ReadUntilNull对应于此:

public static String ReadUntilNull(InputStreamReader reader) throws IOException {
    StringBuilder sb = new StringBuilder();
    char[] results = new char[1];
    int bytes_read = reader.read(results);
    while (results[0] != 0x00 && bytes_read == 1) {
        sb.append(results[0]);
        bytes_read = reader.read(results);
    }

    return sb.toString();
}

我的Node.JS应用程序记录服务器已绑定并连接。只有当我发送数据时,我的Java客户端似乎才无法接收到数据。

我正在学习Java,所以请对我轻松一点^^

1 个答案:

答案 0 :(得分:0)

我认为您做错了。如前所述,您正在尝试从Java方面进行阅读。然后,您应该创建nodejs客户端。验证相同。

更多https://nodejs.org/api/net.html#net_net_createconnection

const net = require('net');
const client = net.createConnection({ port: 8124 }, () => {
  // 'connect' listener.
  console.log('connected to server!');
  client.write('world!\r\n');
});
client.on('data', (data) => {
  console.log(data.toString());
  client.end();
});
client.on('end', () => {
  console.log('disconnected from server');
});