2010-02-13 2 views
0

Я хотел бы установить связь с сервером (Java)/client (Matlab) с помощью сокета. Они могут отправлять сообщения друг другу. Пример показывает, как это сделать в Java-сервере и Java-клиенте, http://java.sun.com/docs/books/tutorial/networking/sockets/clientServer.html.Связь между java-сервером и клиентом Matlab

Когда я пытаюсь переписать клиентскую часть в Matlab, я могу получить только первое сообщение, которое сервер Java отправит и отобразит в окне команд Matlab.

Когда я печатаю сообщение в командном окне Matlab, я не могу передать его на сервер Java.

код Jave:

kkSocket = new Socket("localhost", 3434); 

Matlab эквивалент:

kkSocket = Socket('localhost', 3434); 

Java код клиента:

out = new PrintWriter(kkSocket.getOutputStream(), true); 
    in = new BufferedReader(new InputStreamReader(kkSocket.getInputStream())); 

Что бы эквивалентно Matlab для этого? Заранее спасибо.

ответ

1

Для входного потока:

input_stream = input_socket.getInputStream; 
d_input_stream = DataInputStream(input_stream); 

Для выходного потока:

output_stream = output_socket.getOutputStream; 
d_output_stream = DataOutputStream(output_stream); 
+0

Спасибо. Я просто заменил «output_socket» на input_socket. – 2010-02-18 10:02:17

0

Если вы пытаетесь использовать MATLAB и приложения Java на той же машине, то matlabcontrol может сделать все, что вам ищем. Он автоматически устанавливает соединение с сеансом MATLAB. Он использует Remote Method Invocation Java под капотом, который использует сокеты. matlabcontrol спроектирован специально для того, чтобы включить только общение на localhost; создаваемые сокеты не будут принимать удаленные подключения из-за проблем безопасности, которые могут быть разрешены. Однако, если вам нужно разрешить удаленные подключения, вы можете найти части matlabcontrol's source code.

Смежные вопросы