Я разрабатывал проект с использованием erlang, sfml и c ++ для создания сетевой игры. Я успешно общался с Erlang — 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 ++? Я понимаю, что это просто создание двоичных строк, но я не знаю, в каком формате должны выглядеть данные. До сих пор я не имел опыта работы с c ++.
Заранее спасибо!!!
C ++ / C может использовать ei
библиотека кодировать данные в термины Erlang для отправки приложения Erlang через сокет, а также получать и декодировать термины Erlang. Написание такого приложения на C ++ / C утомительно, но как только вы получите базовый код, он будет работать довольно хорошо.
Также возможно написать не-Erlang узел, называемый Узел C, который связывается с узлом Erlang через Распределенный Эрланг. Вы можете сделать то же самое для Java, используя JInterface пакет. Для узла Erlang такой узел выглядит просто как другой узел в своем кластере. Как с ei
приложения, написание таких узлов может быть утомительным, но они могут быть полезны, когда у вас есть код не-Erlang, который вы хотите легко и безопасно интегрировать в кластер Erlang.
Других решений пока нет …