RPC из Windows в Linux

Есть ли какой-нибудь (рабочий) пример того, как создать RPC из Windows в Linux?

Клиент должен быть приложением Windows NT, сервер - Linux.

Он должен быть MSRPC.

Без Corba, без XML-RPC, SUN-RPC и т. д.

MSDN сообщает это:

RPC можно использовать во всех клиент-серверных приложениях на базе операционных систем Windows. Его также можно использовать для создания клиентских и серверных программ для гетерогенных сетевых сред, включающих такие операционные системы, как Unix и Apple.

К сожалению, проведя несколько часов в Google, я сдаюсь.

Мои ожидания:

  • На узле Linux должна быть установлена ​​Samba, потому что их реализация MSRPC работает.
  • Используя файл IDL, я генерирую заглушки как для клиента, так и для сервера.
  • Клиент собран с использованием MSVC
  • Сервер собран с использованием gcc с некоторыми включениями/библиотеками от samba (или других библиотек).
  • У узла Linux должен быть такой сопоставитель портов RPC.

Может ли кто-нибудь указать мне?


person rkosegi    schedule 26.10.2012    source источник
comment
Я не могу понять, как этот вопрос получил близкое голосование ... если этот вопрос заслуживает закрытия, то лучше вообще закрыть stackoverflow.   -  person yms    schedule 26.10.2012
comment
Поскольку реализация сервера samba достаточно продвинута, чтобы даже разрешить интеграцию с доменом Active Directory, я бы сказал, что то, что вы хотите сделать, осуществимо, но я не уверен в части использования файла IDL для создания заглушек для сервера. , надеюсь, я ошибаюсь.   -  person yms    schedule 26.10.2012
comment
@yms спасибо за ваш комментарий. Я почти уверен, что ключевой частью решения является самба, но у меня нет точного представления. Я предложу награду за мой вопрос через 2 дня, чтобы привлечь больше внимания и, возможно, какой-нибудь рабочий пример кода :)   -  person rkosegi    schedule 26.10.2012
comment
Вы также можете изучить FreeDCE и OpenDCE.   -  person ninjalj    schedule 27.10.2012
comment
Было бы проще использовать собственные сокеты с вашим собственным текстовым протоколом. Скомпилируйте службу NT для Windows и демон для nix-систем.   -  person pcunite    schedule 28.10.2012
comment
@pcunite есть много более простых способов. Я сказал, что это ДОЛЖЕН быть MSRPC / DCOM, также мне не нужен сервис на стороне NT, только клиент.   -  person rkosegi    schedule 28.10.2012


Ответы (1)


Я думаю, у вас есть 2 возможных способа справиться с этим:

1- Вы можете попробовать использовать DCOM с вином, что означает, что вы на самом деле напишите свой код для Windows, но в то же время вы можете проверить свои результаты в процессе и избежать использования вызовов WinAPI, которые Wine не может правильно обработать. Этот подход позволит вам генерировать код-заглушку из ваших IDL-файлов.

2- Вы можете попробовать использовать подключаемые модули Samba RPC, но я боюсь, что в этом случае связь RPC будет более примитивной.

Изменить:

Кажется, есть много других способов. Я нашел список библиотек в DCOM-Wikipedia, j-Interop, например, выглядит особенно многообещающе.

person yms    schedule 29.10.2012
comment
Кстати, я только что нашел эти две части информации, не то чтобы я ждал награды, чтобы опубликовать это :) - person yms; 29.10.2012
comment
Спасибо, я читал о вине и слышал, что оно совместимо с двоичным кодом, но не совместимо с сетью (по сети) с MS-RPC. Однако сегодня я изучаю исходный код Samba4, и он выглядит очень многообещающе. Я попробую ваше предложение с подключаемыми модулями, как только Я закончил с этим, награда ваша :). Похоже, никто другой не может сказать ничего ценного, кроме вас. Если вы найдете что-то еще, пожалуйста, держите меня в курсе. Спасибо !!! - person rkosegi; 29.10.2012
comment
@rkosegi Я нашел еще кое-что интересное. - person yms; 29.10.2012
comment
Я уже читал эту статью, она выглядит нормально, но для моего проекта мне нужно использовать C/C++, а также основная идея состоит в том, чтобы использовать существующую инфраструктуру, которая представляет собой MSRPC/DCOM на стороне win nt и samba на стороне linux. Надеюсь, я довольно близко к запуску hello world rpc-lugin на основе источника samba и предоставленной вами ссылки. Я чувствую, что так и должно быть :) - person rkosegi; 29.10.2012
comment
У меня есть некоторый прогресс, похоже, так оно и будет работать. Теперь мне просто нужно спроектировать интерфейс, чтобы сделать его гибким для моих целей. Также предстоит долгий путь работы над аутентификацией в средах AD. Еще раз спасибо. - person rkosegi; 31.10.2012
comment
Здравствуйте @rkosegi, я понимаю, что этот пост устарел, однако вы когда-нибудь разобрались с этой проблемой? Я делаю что-то очень похожее, и я застрял. Если вы это поняли, не могли бы вы предоставить мне литературу, на которую вы ссылались. Ненавижу просить о примере, но сейчас я в отчаянии и был бы признателен за все, что вы можете мне предоставить. Спасибо! - person Diesel15; 25.10.2018
comment
Привет @ Diesel15, от идеи давно отказались, извините. Я считаю, что в настоящее время Samba должна предоставлять по крайней мере те же возможности, что и в то время, когда я спрашивал об этом. - person rkosegi; 25.10.2018
comment
@rkosegi Хорошо! Спасибо! - person Diesel15; 25.10.2018