java - 在MATLAB中编写Java的pw.println()等

标签 java sockets matlab

我正在尝试在 MATLAB 中使用 Java 命令 pw.println() 和 br.readLine(),因为我已经在 MATLAB 和我想使用 Java 控制的命令行程序之间设置了一个套接字 (input_socket2) BufferedReader 和 PrintWriter 类。

在下面的代码片段之前,我实现了另一个连接两台计算机的套接字。这很好用,而且我还知道以下代码片段成功地打开了 MATLAB 和其他程序之间的通信线路。但是,MATLAB 在 pw.println('noop') 处抛出错误。我认为这与语法有关,但我不确定如何用 MATLAB 语法编写命令:

try
    input_socket2 = Socket(host2,port2);
    input_stream2   = input_socket2.getInputStream;
    d_input_stream2 = DataInputStream(input_stream2);
    br = BufferedReader(InputStreamReader(input_stream2));
    pw = PrintWriter(input_socket2.getOutputStream,true);
    pw.println('noop')
    br.read
end

有什么想法吗?

最佳答案

由于您没有提供实际错误,因此很难查明问题所在。

无论如何,这里有一个简单的实现来展示这个概念(经过测试并且工作得很好!):

服务器.java

import java.net.*;
import java.io.*;

public class Server
{
    public static void main(String[] args) throws IOException
    {
        System.out.println("Listening on port...");
        ServerSocket serverSocket = null;
        try {
            serverSocket = new ServerSocket(4444);
        } catch (IOException e) {
            System.err.println("Could not listen on port: 4444.");
            System.exit(1);
        }

        Socket clientSocket = null;
        try {
            clientSocket = serverSocket.accept();
            System.out.println("Received connection!");
        } catch (IOException e) {
            System.err.println("Accept failed.");
            System.exit(1);
        }

        PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
        BufferedReader in = new BufferedReader( new InputStreamReader(clientSocket.getInputStream()) );
        String inputLine;

        while ( (inputLine = in.readLine()) != null ) {
            System.out.println("Client says: " + inputLine);
            out.println(inputLine);
        }

        out.close();
        in.close();
        clientSocket.close();
        serverSocket.close();
    }
}

客户端.m

import java.io.*;
import java.net.*;

%# connect to server
try
    sock = Socket('localhost',4444);
    in = BufferedReader(InputStreamReader(sock.getInputStream));
    out = PrintWriter(sock.getOutputStream,true);
catch ME
    error(ME.identifier, 'Connection Error: %s', ME.message)
end

%# get input from user, and send to server
userInput = input('? ', 's');
out.println(userInput);

%# get response from server
str = in.readLine();
disp(['Server says: ' char(str)])

%# cleanup
out.close();
in.close();
sock.close();

关于java - 在MATLAB中编写Java的pw.println()等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2675611/

相关文章:

java - 在Java中获取系统 block 大小

matlab - Simulink 模块显示顺序

php - PHP套接字脚本导致许多长期的CLOSE_WAIT套接字连接

linux - 在 UDP 中重用端口号

string - 字符串的参数计数

python - 在 Python 中重现涉及 for 循环的 MATLAB 代码时出现问题

Java:出现在入门指南中

java - 带有任意 AND 子句的动态 spring data jpa 存储库查询

java - 按下按钮时如何更改 ImageView 的图标?

.net - 在服务器上引发远程异常时,获取套接字关闭错误