Отправка и получение данных через сокет: Node.JS сервер, Java клиент - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь отправить данные с сервера Node JS net в приложение 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 сторона, работающая в al oop:

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

, где 'client' - это сокет, прослушивающий правильный порт. 'running' - это логическое значение атома c, которое имеет значение true.

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 голосов
/ 29 марта 2020

Я думаю, вы просто делаете неправильно. Как вы упомянули, вы пытаетесь читать на 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');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...