2016-03-29 4 views
1

Ich habe ein Projekt mit Erlang, Sfml und C++ entwickelt, um ein Netzwerkspiel zu erstellen. Ich habe die Kommunikation von Erlang - Erlang mit einigem Erfolg gemacht, aber ich stoße auf einige Probleme bei der Integration von C++.Kommunikation mit Erlang-Server über C++ (Senden von Binärdateien)

Früher konnte ich Daten in diesem Format senden (aus dem ‚Kunden‘):

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})); 

und die Daten verarbeiten, um einen Fall mit: für mich

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. 

Gibt es eine Möglichkeit Daten so über C++ senden? Ich realisiere, dass es nur binäre Stiche bauen, aber ich weiß nicht, welches Format die Daten brauchen, um l zu sehen, bis jetzt ist es nicht etwas, das ich irgendeine Erfahrung gehabt habe, die mit C++ tut

Dank im Voraus !!!

+0

Diesen nützlichen Link für alle gefunden, die die unten vorgeschlagene Methode verwenden möchten [Link] (http://erlang.org/doc/apps/erl_interface/erl_interface.pdf) –

Antwort

3

C++/C kann die ei library verwenden, um Daten in Erlang-Termen zu codieren, um eine Erlang-Anwendung über einen Socket zu senden und Erlang-Terme zu empfangen und zu decodieren. Das Schreiben einer solchen C++/C-Anwendung ist mühsam, aber sobald Sie den Basiscode installiert haben, funktioniert er ziemlich gut.

Es ist auch möglich, einen Nicht-Erlang-Knoten mit der Bezeichnung C node zu schreiben, der über mit einem Erlang-Knoten kommuniziert. Sie können das gleiche für Java mit der JInterface package tun. Für den Erlang-Knoten erscheint ein solcher Knoten nur als ein weiterer Knoten in seinem Cluster. Wie bei ei Anwendungen kann das Schreiben solcher Knoten mühsam sein, aber sie können nützlich sein, wenn Sie Nicht-Erlang-Code haben, den Sie nahtlos und sicher in einen Erlang-Cluster integrieren möchten.

+0

Prost, ich werde einen Blick darauf werfen es, und melden Sie zurück, wenn ich einige erfolgreiche Ergebnisse bekomme !!!! –