gpt4 book ai didi

c# - 与 C# 程序通信 Erlang 服务器

转载 作者:太空宇宙 更新时间:2023-11-03 12:54:45 25 4
gpt4 key购买 nike

我正在尝试为我的程序编写 Erlang 服务器,但仍然遇到一些我无法处理的问题。使用它时(我在 erlang 中编写了客户端来测试服务器):

send(Socket, Message) ->
BinMsg = term_to_binary(Message),
gen_tcp:send(Socket, Message).

一切似乎都正常,但是当我尝试从我的 c# 客户端发送内容时,服务器看到连接和断开连接但看不到消息(它甚至没有反应)

theStream = mySocket.GetStream();
theWriter = new StreamWriter(theStream);
String foo = theLine + "\r\n";
test = System.Text.Encoding.UTF8.GetBytes(foo);
theWriter.Write(test);

我意识到这可能是 Erlang 的一些问题

term_to_binary()

但是我不知道怎么解决。我需要简单的:

  1. 客户端将数据转换为字节
  2. 客户端向服务器发送数据
  3. 服务器编码数据
  4. 服务器决定做什么
  5. 服务器生成新数据,将其转换为字节并发送给客户端
  6. 客户端对其进行编码

我可以在字符串上做简单的事情,但我不认为这种方法是好的解决方案,我想发送二进制文件而不是字符串。有什么建议吗?

最佳答案

您应该在客户端正确编码数据,以便能够在 Erlang 中使用 term_to_binary/binary_to_term。看看http://erlang.org/doc/apps/erts/erl_ext_dist.html实现起来并不难,我认为应该有现成的解决方案。

但是从您的话来看,您的代码似乎还有其他问题,因为 Erlang 应该在错误的二进制文件上抛出异常。可能与 {active, true|false|once|N} 有关。您应该在套接字上设置 {active, true} 以便能够将 TCP 数据包作为 Erlang 消息接收(onceN 也很好,采取查看文档:http://erlang.org/doc/man/gen_tcp.html)。如果你想接收二进制文件,你应该在套接字上设置 binary 选项。

关于c# - 与 C# 程序通信 Erlang 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34318123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com