使用gen_tcp:send/2通过套接字发送消息

使用gen_tcp:send/2通过套接字发送消息,tcp,erlang,otp,gen-tcp,Tcp,Erlang,Otp,Gen Tcp,如何使用gen_tcp在erlang中发送[Integer,String]形式的消息 例如:我希望使用gen_tcp:send/2通过套接字发送[25,“Hello”]或[50,“Hi”]形式的消息 我试着做[ID | Msg],但那没有帮助。 谢谢在Erlang中,字符串只是一个整数列表,因此列表[25,“Hello”] 实际上表示为[25,[72101108108111] 问题仍然是,如何通过Erlang中的套接字发送该信息 根据,在Erlang中,您可以以二进制或列表的形式发送数据,您可以

如何使用gen_tcp在erlang中发送[Integer,String]形式的消息

例如:我希望使用gen_tcp:send/2通过套接字发送[25,“Hello”]或[50,“Hi”]形式的消息

我试着做[ID | Msg],但那没有帮助。
谢谢

在Erlang中,字符串只是一个整数列表,因此列表
[25,“Hello”]
实际上表示为
[25,[72101108108111]

问题仍然是,如何通过Erlang中的套接字发送该信息

根据,在Erlang中,您可以以二进制或列表的形式发送数据,您可以在创建套接字时将其设置为
{mode,binary}
{mode,list}

在使用二进制数据的情况下(这是一个建议,因为发送和接收二进制文件比列表快),您可以执行以下操作:

{ok, Socket} = gen_tcp:connect(Host, Port, [{mode, binary}]).
Data = list_to_binary([25, "Hello"]).
gen_tcp:send(Socket, Data).
现在,如果在列表模式下使用套接字,只需直接发送列表:

{ok, Socket} = gen_tcp:connect(Host, Port, [{mode, binary}]).
Data = [25, "Hello"].
gen_tcp:send(Socket, Data).
在服务器端,如果您在列表模式下的套接字中接收数据,您可以使用以下命令将其转换回原始格式:

[Integer|String] = ListReceived.
如果以二进制模式在套接字中接收数据,则必须将数据从二进制转换为列表,如:

[Integer|String] = binary_to_list(BinaryReceived).

在Erlang中,字符串只是整数列表,因此列表
[25,“Hello”]
实际上表示为
[25[72101108108111]

问题仍然是,如何通过Erlang中的套接字发送该信息

根据,在Erlang中,您可以以二进制或列表的形式发送数据,您可以在创建套接字时将其设置为
{mode,binary}
{mode,list}

在使用二进制数据的情况下(这是一个建议,因为发送和接收二进制文件比列表快),您可以执行以下操作:

{ok, Socket} = gen_tcp:connect(Host, Port, [{mode, binary}]).
Data = list_to_binary([25, "Hello"]).
gen_tcp:send(Socket, Data).
现在,如果在列表模式下使用套接字,只需直接发送列表:

{ok, Socket} = gen_tcp:connect(Host, Port, [{mode, binary}]).
Data = [25, "Hello"].
gen_tcp:send(Socket, Data).
在服务器端,如果您在列表模式下的套接字中接收数据,您可以使用以下命令将其转换回原始格式:

[Integer|String] = ListReceived.
如果以二进制模式在套接字中接收数据,则必须将数据从二进制转换为列表,如:

[Integer|String] = binary_to_list(BinaryReceived).

这里有一个很好的介绍如何做到这一点:官方文档也有一些例子:要获得更具体的答案,你需要发布一些你尝试过的代码示例,但它不适合你。这里有一个很好的介绍如何做到这一点:官方文档也有一些例子:要获得更具体的答案,你需要发布您尝试过的一些代码示例不适用于您。