Эффективная передача данных с Java на C ++ в Windows - PullRequest
6 голосов
/ 06 ноября 2008

Я рассчитываю на потоковую передачу большого количества данных (до ~ 1 Гбит) из Java в приложение C ++ (оба на одной машине). В настоящее время я использую FIFO в Linux, но мне тоже нужно решение для Windows.

Самый кроссплатформенный метод - это локальный сокет, но: а) не получу ли я огромные накладные расходы от контрольной суммы TCP и копирования в пространство ядра и из него, и б) не попытается ли межсетевой экран обычного пользователя проверить и, возможно, заблокировать соединение?

Кажется, что более безопасное решение может заключаться в использовании JNI и API Named Pipe (\. \ Pipe \ blah), создавая ужасный беспорядок на платформе обеих сторон соединения.

Это действительно мои 2 лучших варианта (и какие люди порекомендуют?) Спасибо!

Ответы [ 11 ]

0 голосов
/ 06 ноября 2008

Я бы посоветовал против JNI, потому что это очень сложно для отладки. Если в коде C ++ произойдет ошибка или возникнет необработанное исключение, ваша JVM потерпит крах, и вы не будете знать, почему

...