【问题标题】:Can't send data from Java Socket Server to NodeJS client无法将数据从 Java Socket 服务器发送到 NodeJS 客户端
【发布时间】:2019-09-16 03:25:35
【问题描述】:

我正在套接字服务器 (Java) 和套接字客户端 (NodeJS) 之间建立实时连接。这是一个网络界面。

我可以将数据从 NodeJS 发送到 Java,但反过来不行。我在代码中评论了我的意思是哪些职位。我已经尝试过,就像您使用 out.write("Hello World\n"); 看到的那样(当然是使用flush)。我也尝试了 out.println("Hello World"); (当然是冲洗)。

public class WebHandler {

    private ServerSocket server;
    private static Socket sock;

    public void listen(int port) {
        try {
            server = new ServerSocket(port);
        } catch (IOException e) {
            System.out.println("Could not listen on port " + port);
            System.exit(-1);
        }

        Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.getPlugin(), new BukkitRunnable() {
            @Override
            public void run() {
                try {
                    System.out.println("Waiting for connection");
                    final Socket socket = server.accept();
                    sock = socket;
                    final InputStream inputStream = socket.getInputStream();
                    final InputStreamReader streamReader = new InputStreamReader(inputStream);
                    BufferedReader br = new BufferedReader(streamReader);

                    // readLine blocks until line arrives or socket closes, upon which it returns null
                    String line = null;
                    while ((line = br.readLine()) != null) {
                        System.out.println(line);
                    }

                    WebHandler.sendMessage();

                } catch (IOException e) {
                    System.out.println("Accept failed: " + port);
                    System.exit(-1);
                }
            }
        }, 0, 100);

    }

    // CRITICAL

    public static void sendMessage() {
        try {
            PrintWriter out = new PrintWriter(sock.getOutputStream());
            out.write("Hello World from Java!" + "\n");
            out.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

var net = require('net');

var client = net.connect(9090, 'localhost');
client.setEncoding('utf8');
setInterval(function() {
  console.log("Writing....")
  var ret = client.write('Hello from node.js\n');
  console.log("Wrote", ret)
}, 5000);

// CRITICAL

client.on('data', function(data) {
  console.log('Received: ' + data);
});

请不要因为 Bukkit.getScheduler() 而让你分心...它只是一个任务管理器。在此先感谢:D

【问题讨论】:

    标签: javascript java node.js sockets


    【解决方案1】:

    您没有收到来自 java 的消息,因为您设置了一个间隔,该间隔将始终向服务器发送消息,并且服务器将卡在 while 循环中。

    我建议在某个时候停止间隔,以便调用 sendMessage()。

    【讨论】:

      猜你喜欢
      • 2015-03-05
      • 2020-08-17
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 2015-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多