我正在尝试在 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/