【问题标题】:Communicating with erlang server via c++ (Sending Binary)通过 c++ 与 erlang 服务器通信(发送二进制文件)
【发布时间】:2016-03-29 15:49:05
【问题描述】:

我一直在使用 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++ 的经验

提前致谢!!!

【问题讨论】:

  • 为任何想要使用下面建议的方法的人找到这个有用的链接Link

标签: c++ binary server erlang sfml


【解决方案1】:

C++/C 可以使用ei library 将数据编码为 Erlang 术语,以通过套接字发送 Erlang 应用程序,以及接收和解码 Erlang 术语。编写这样的 C++/C 应用程序很乏味,但一旦你掌握了基本代码,它就会工作得很好。

也可以编写一个非 Erlang 节点,称为 C node,它通过 Distributed Erlang 与 Erlang 节点通信。您可以使用JInterface package 对Java 执行相同的操作。对于 Erlang 节点,这样的节点只是其集群中的另一个节点。与ei 应用程序一样,编写这样的节点可能很乏味,但当您有非 Erlang 代码并希望无缝且安全地集成到 Erlang 集群中时,它们会很方便。

【讨论】:

  • 干杯,我会研究一下,如果我得到一些成功的结果回来报告!!!!
猜你喜欢
  • 2010-12-20
  • 2016-03-22
  • 2014-03-31
  • 2010-09-29
  • 2011-09-23
  • 2011-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多