Синхронизация сокетов - Java-клиент с сервером MATLAB - PullRequest
3 голосов
/ 10 марта 2011

У меня есть система, которую я внедряю, где у меня есть сервер MATLAB, который использует сокет для приема TCP-соединения, и Java-клиент, который подключается к этому серверу.

Моя проблема заключается в том, что когда сервер принимаетклиентское соединение, по-видимому, клиенту удается отправить входные данные до того, как серверу удается достичь строки кода, которая блокирует его для чтения ожидаемого ввода от клиента ...

Предполагая, что я не знаю, скольковремя ожидания будет безопасным, в общем случае, есть ли способ решить эту проблему для всех ситуаций?

Могу ли я использовать какой-либо объект блокировки, общий для MATLAB и Java?Должен ли я считать, что клиент всегда ожидает какого-то подтверждения от сервера?и если да, то как именно я могу гарантировать, что сервер поспешит прослушать после отправки такого уведомления клиенту, достаточно быстро?

Заранее спасибо!

Кстати,если кто-нибудь знает простой способ получения системного времени из Java (System.currentTimeMilis ()) в MATLAB, было бы полезно провести дальнейшую проверку этого.Я знаю, что в MATLAB есть довольно много функций для доступа ко времени, но я действительно не знаю, есть ли (или каким-либо образом) способ получить его точно так же, как в Java.

1 Ответ

1 голос
/ 10 марта 2011

Существуют более простые способы вызова Matlab из Java - например, JMI: http://undocumentedmatlab.com/blog/jmi-java-to-matlab-interface/

Что касается системного времени, запустите его в Matlab:

javaTime = java.lang.System.currentTimeMillis

...