Может ли сервлет открыть сокет для общения с нативным кодом? - PullRequest
2 голосов
/ 20 сентября 2010

У меня есть C API, который взаимодействует с аппаратным обеспечением, и я хочу, в конечном счете, делать вызовы этого API из браузера.Думать, что некоторые из библиотек сервлетов c ++ слишком сложны, как и JNI, я подумал, что смогу доказать эту идею следующим образом:

Java-сервлет получает простое строковое сообщение через HTTP.Сервлет открывает сокет для передачи данных через UDP.Запущенный C-процесс открывает сокет и ожидает сообщения.Процесс C получает сообщение, делает вызов и отправляет обратно простое строковое сообщение через UDP.Сервлет передает ответное сообщение обратно в браузер.

Короче говоря, может ли сервлет открыть сокет для связи с собственным (winsock) кодом?

Ответы [ 3 ]

0 голосов
/ 20 сентября 2010

Розетка - это розетка. Протоколы транспортного уровня, такие как UDP, были бы бессмысленными, если бы вы могли использовать их только для связи с конечной точкой, используя точно такую ​​же реализацию протокола.

Важной частью является обеспечение того, чтобы обе конечные точки согласовали протокол / формат данных для того, что вы передаете.

0 голосов
/ 20 сентября 2010

Да, это было бы отличным решением.

Однако следует внимательно рассмотреть вопрос о том, как следует обрабатывать параллельные запросы, когда два сервлета устанавливают соединение.Если библиотека / компьютер, возможно, было бы полезно использовать простой сокет, который не принимает другие соединения после установления соединения.

В java вы можете затем сериализовать доступ к библиотечному сокету, используя, например, BlockingQueue,так что у вас есть хорошо определенное поведение одновременного доступа.

Это позволит избежать проблем с повторением спуриуса.

0 голосов
/ 20 сентября 2010

Нет причин, почему нет.Все, что вам нужно сделать, это установить TCP / UDP-соединение и иметь сервер C ++, чтобы ответить на это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...