2016-03-29 5 views
1

Ive разрабатывает проект с использованием erlang, sfml и C++ для создания сетевой игры. Ive делал сообщения от erlang-erlang с некоторым успехом, но сталкивался с некоторыми проблемами, занимающимися C++.Общение с сервером erlang через C++ (Отправка двоичного файла)

Раньше я был в состоянии передавать данные в этом формате (от «клиента»):

gen_tcp:send(Socket, term_to_binary({Cmd, Parameters})); 
gen_tcp:send(Socket, term_to_binary({Cmd, {P1, P2}, P3})); 
gen_tcp:send(Socket, term_to_binary({Cmd})); 
gen_tcp:send(Socket, term_to_binary({Cmd, Msg})); 

и обрабатывать данные, используя случай:

client_handler(Socket) -> 
io:format("Waiting for data...~n", []), 

case gen_tcp:recv(Socket, 0) of 
{ok, Bin} -> 
    Cmd = binary_to_term(Bin), 
    io:format("Command '~p' received.~n", [Cmd]), 

case Cmd of 
    {register, NewAtom} ->   
     %%Do Stuff   
    {update_transform, {X,Y}, Rot} -> 
     %%Do Stuff  
    {get_transform} -> 
     %%Do Stuff 
    {send_message, Msg} -> 
     %%Do Stuff  
    _ -> 
     %%Do Stuff 
    end, 

client_handler(Socket); 

{error, _} -> 
    io:format("Lost connection to client!~n", []) 
end. 

Есть ли способ для меня отправлять данные через это с помощью C++? Я понимаю, что он просто строит двоичные укусы, но я не знаю, в каком формате данные должны выглядеть l до сих пор. Это не то, что у меня было с опытом работы с C++.

Спасибо заранее!

+0

Обнаружили эту полезную ссылку для тех, кто хочет использовать предложенный ниже метод [Ссылка] (http://erlang.org/doc/apps/erl_interface/erl_interface.pdf) –

ответ

3

C++/C может использовать ei library для кодирования данных в терминах Erlang для отправки приложения Erlang через сокет, а также для получения и декодирования условий Erlang. Написание такого приложения C++/C является утомительным, но как только вы получите базовый код на месте, он работает очень хорошо.

Также можно написать узел, не относящийся к Erlang, который называется C node, который связывается с узлом Erlang через Distributed Erlang. Вы можете сделать то же самое для Java, используя JInterface package. К узлу Erlang такой узел отображается как еще один узел в своем кластере. Как и в случае с приложениями ei, запись таких узлов может быть утомительной, но они могут быть удобными, если у вас есть код, отличный от Erlang, который вы хотите легко и безопасно интегрировать в кластер Erlang.

+0

Привет, я рассмотрю он, и сообщите, если я получу некоторые успешные результаты !!!! –