【问题标题】:Sending and receiving data through a socket: Node.JS server, Java client通过套接字发送和接收数据:Node.JS 服务器、Java 客户端
【发布时间】:2020-07-10 05:00:24
【问题描述】:

我正在尝试将数据从 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);
        }

其中'client' 是侦听正确端口的套接字。 '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,所以请放轻松^^

【问题讨论】:

    标签: javascript java node.js sockets


    【解决方案1】:

    我认为你做错了。正如您所提到的,您正在尝试在 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');
    });
    

    【讨论】:

    • 我在尝试您的代码时收到“错误:在 TCPConnectWrap.afterConnect [as oncomplete] 处连接 ECONNREFUSED 127.0.0.1:58430”。我之前尝试过这种方法并遇到了这个问题,这就是为什么我认为我必须切换它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多