通过 C++ 与 erlang 服务器通信(发送二进制文件)
Communicating with erlang server via c++ (Sending Binary)
我一直在使用 erlang、sfml 和 c++ 开发一个项目,以创建一个网络游戏。我已经完成了来自 erlang 的通信 - erlang 取得了一些成功,但是我在集成 c++ 时遇到了一些问题。
以前我能够以这种格式发送数据(来自 'client'):
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
library 将数据编码为 Erlang 术语以通过套接字发送 Erlang 应用程序,以及接收和解码 Erlang 术语。编写这样的 C++/C 应用程序是乏味的,但是一旦您获得了基本代码,它就可以很好地工作。
也可以编写一个非 Erlang 节点,称为 C node, that communicates with an Erlang node via Distributed Erlang. You can do the same for Java using the JInterface package。对于 Erlang 节点,这样的节点只是其集群中的另一个节点。与 ei
应用程序一样,编写此类节点可能很乏味,但当您拥有非 Erlang 代码并希望无缝且安全地集成到 Erlang 集群中时,它们会很方便。
我一直在使用 erlang、sfml 和 c++ 开发一个项目,以创建一个网络游戏。我已经完成了来自 erlang 的通信 - erlang 取得了一些成功,但是我在集成 c++ 时遇到了一些问题。
以前我能够以这种格式发送数据(来自 'client'):
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
library 将数据编码为 Erlang 术语以通过套接字发送 Erlang 应用程序,以及接收和解码 Erlang 术语。编写这样的 C++/C 应用程序是乏味的,但是一旦您获得了基本代码,它就可以很好地工作。
也可以编写一个非 Erlang 节点,称为 C node, that communicates with an Erlang node via Distributed Erlang. You can do the same for Java using the JInterface package。对于 Erlang 节点,这样的节点只是其集群中的另一个节点。与 ei
应用程序一样,编写此类节点可能很乏味,但当您拥有非 Erlang 代码并希望无缝且安全地集成到 Erlang 集群中时,它们会很方便。