У меня есть приложение Java, подключающееся через TCP-сокет к "серверу", разработанному на C/С++.
оба приложения и сервер работают на одном компьютере, в поле Solaris (но мы планируем перейти на Linux в конечном итоге). тип обмена данными - это простые сообщения (логин, логин ACK, затем клиент запрашивает что-то, ответы сервера). каждое сообщение длиной около 300 байт.
В настоящее время мы используем Sockets, и все в порядке, однако я ищу более быстрый способ обмена данными (более низкая латентность) с использованием методов IPC.
Я изучал сеть и придумывал ссылки на следующие технологии:
- общая память
- трубы
- очереди
- а также то, что называется DMA (прямой доступ к памяти)
но я не смог найти правильный анализ их соответствующих характеристик, ни как реализовать их как в JAVA, так и в C/С++ (чтобы они могли разговаривать друг с другом), за исключением, может быть, труб, которые я мог себе представить, как это сделать.
может ли кто-нибудь прокомментировать возможности и возможности каждого метода в этом контексте? любой указатель/ссылку на полезную информацию о реализации?
EDIT/UPDATE
следуя комментариям и ответам, которые я получил здесь, я нашел информацию о Unix Domain Sockets, которые, похоже, были построены только по трубам и сэкономили бы мне весь стек TCP. это определенная платформа, поэтому я планирую тестировать ее с помощью JNI или juds или junixsocket.
следующими возможными шагами будут прямая реализация труб, а затем разделяемая память, хотя я был предупрежден о дополнительном уровне сложности...
спасибо за помощь