一尘不染

使用套接字将数据从node.js发送到Java

node.js

我正在尝试通过套接字将数据从node.js发送到Java。我四处搜寻,但没有什么真正有用的。我习惯使用socket.io,但是在这种情况下,它似乎并不适合于此。似乎所有用于node.js的套接字扩展都不真正适合发送消息,而是听消息并回答某些问题。

我的Java应用程序基本上应该从node.js接收一些工作,完成工作并将一些结果发送回node.js。不,该工作无法在node.js上完成,它必须由Java(实际上是Scala,但无论如何)完成。

你们当中有人知道我该怎么做吗?

谢谢


阅读 285

收藏
2020-07-07

共1个答案

一尘不染

您可以使用node.js中的内置套接字来执行类似的操作(在java和node.js中都非常容易,但是您会明白这一点):

Java的:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class Test {

    public static void main(String[] args) {
        ServerSocket server;
        Socket client;
        InputStream input;

        try {
            server = new ServerSocket(1010);
            client = server.accept();

            input = client.getInputStream();
            String inputString = Test.inputStreamAsString(input);

            System.out.println(inputString);

            client.close();
            server.close();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static String inputStreamAsString(InputStream stream) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(stream));
        StringBuilder sb = new StringBuilder();
        String line = null;

        while ((line = br.readLine()) != null) {
            sb.append(line + "\n");
        }

        br.close();
        return sb.toString();
    }

}

Node.js:

var net = require('net');

var client = net.connect(1010, 'localhost');

client.write('Hello from node.js');

client.end();

以及有关套接字的node.js文档的链接:http :
//nodejs.org/docs/latest/api/net.html

2020-07-07