简体   繁体   English

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

[英]Sending and receiving data through a socket: Node.JS server, Java client

I'm trying to send data from a Node JS net server to a java application.我正在尝试将数据从 Node JS 网络服务器发送到 Java 应用程序。 Here's my JS code:这是我的 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');
}); 

So I'm just debugging for now, and trying to send data (foo:bar) on an interval.所以我现在只是在调试,并尝试按时间间隔发送数据 (foo:bar)。

Here's my java side, running in a loop:这是我的 java 端,循环运行:

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

where 'client' is a socket listening on the correct port.其中“客户端”是侦听正确端口的套接字。 'running' is an atomic boolean that is true. 'running' 是一个原子布尔值,它是真的。

Tools.ReadUntilNull corresponds to this: 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();
}

My Node.JS app logs that the server is bound & connected.我的 Node.JS 应用程序记录了服务器已绑定和连接。 Only when I send data I can't seem to receive it in my Java client.仅当我发送数据时,我的 Java 客户端似乎无法接收到它。

I'm just learning about java so please be easy on me ^^我只是在学习 Java,所以请对我放轻松 ^^

I think you are just doing wrong.我认为你只是做错了。 As you mentioned, You are trying to read on java side.正如您所提到的,您正在尝试在 Java 方面阅读。 Then you should create nodejs client.然后你应该创建 nodejs 客户端。 Verify the same.验证相同。

More: https://nodejs.org/api/net.html#net_net_createconnection更多: 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');
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM