草庐IT

string - Erlang:将 TCP 发送的字符串转换为正确的形式,例如<<"SomeString">> 到 "SomeString"?

我有一个客户端和一个服务器,我使用客户端发送一个字符串,例如"Hello"它在服务器端显示为>.有没有办法简单地转换>返回"Hello"?我尝试使用,String=io_lib:format("~p",[StringIn]),lists:flatten(String),但这使得格式为>变成[[60,60,"\"Hello\"",62,62]]...顺便说下代码:-module(ss1).-compile(export_all).-import(lists,[reverse/1]).client()->{ok,Socket}=gen_tcp:connect("localhost",234

tcp - Erlang 套接字直到第二个 setopts {active,once} 才接收

首先,我想道歉,我提供了这么多信息,以尽可能清楚地说明问题所在。如果还有什么需要澄清的,请告诉我。(运行erlangR13B04,内核2.6.18-194,centos5.5)我有一个很奇怪的问题。我有以下代码来监听和处理套接字:%Optsusedtomakelistensocket-define(TCP_OPTS,[binary,{packet,raw},{nodelay,true},{reuseaddr,true},{active,false},{keepalive,true}]).%Acceptorloopwhichspawnsoffsockprocessorswhenconne

tcp - Erlang TCP 服务器处理

我开始学习Erlang,希望为实时多人游戏创建一个游戏服务器。目前,我正在尝试估计Erlang与Scala相比的工作量和头痛程度。因此,首先,我正在创建一个简单的Erlang服务器进程。我通过JesseFarmer找到了一个很好的教程我已经对其进行了修改以了解更多信息。我修改后的代码与他的echo服务器类似,除了它接受英文单词并简单地返回Lojban等价物。但是,只会选择通配符。这是代码:-module(translate).-export([listen/1]).-import(string).-define(TCP_OPTIONS,[binary,{packet,0},{activ

tcp - Erlang tcp 服务器/客户端发送消息

我目前正在编写一个简单的服务器,它将与客户端连接,然后在服务器充当中介的情况下相互交谈。设置是:服务器启动2个客户端连接到服务器Client1/2发送一strip有唯一ID(一个原子)的消息服务器将此ID与SocketPID一起保存Client1发送{send_to_id,client2id,Message}服务器消息Client2但这对我不起作用,我收到function_clause错误。所以基本上我想用tcp_send向客户端发送消息,而不是让客户端成为“服务器”,而只是使用recv。这可能吗?服务器代码:-export([start/1]).-define(TCP_OPTIONS

c - 将 erlang 记录发送到 c 程序

我正在做我的作业,其中一部分是将erlang术语发送到一个c程序,该程序将能够通过已建立的tcp连接相互通信。我能够发送数字、列表、bool值、二进制文件,并能够在我的C程序中对它们进行解码以获取发送的消息。我正在使用ei模块来做这些事情。在erlang方面,我使用etf编码,如term_to_binary/1和其他。就是说,我想知道如何通过在erlang端编码并在c端解码的套接字发送记录。ei有很多函数来获取从二进制格式解码的原始数据类型,但不能获取像记录这样的复合数据类型。记录很简单,如-rd(person,{name="",email=""})我可以将其发送为gen_tcp:se

Erlang 中的 TCP 端口

我正在使用Erlang编写比特流客户端代码。我在同一个问题上被困了4天。我将握手发送给所有对等点,每个对等点都有自己的ip:port。我使用gen_tcp:connect进行连接。问题是我无法收到他们的回复。我做了很多研究并使用了一些程序来监控我的入站/出站连接。对等点获取数据并将回复发送回我用来向他们发送握手的端口。代码明智:get_tcp:connect选择一个端口并使用该端口将数据发送到对等点。对等方在该端口上回复。然而,正如您在Erlang中所知,您需要使用gen_tcp:listen来获取回复连接并且您需要指定一个端口。在我的例子中,我应该监听的端口是gen_tcp:conn

http - Erlang:接受连接时出现奇怪的滞后

我一直在玩弄一个玩具网络服务器,我通过将它置于重负载下来构建它。我发现它的表现非常好,除了一些异常值。这是相关代码:init()->%Getsthelistensocket({active,false}),generatesacceptorthreadscasegen_tcp:listen(?LISTEN_PORT,?TCP_OPTS)of{ok,Listen}->?MODULE:gen_accepts(50,Listen)end,?MODULE:supervisor_loop(Listen).supervisor_loop(LS)->receive_->okafter60000->o

使用 Erlang 的 gen_tcp 模块的 Elixir 上的 TCP 监听器

我正在使用以下代码在elixir上创建一个TCP监听器:defmoduleKVServerdouseApplication@docfalsedefstart(_type,_args)doimportSupervisor.Specchildren=[supervisor(Task.Supervisor,[[name:KVServer.TaskSupervisor]]),worker(Task,[KVServer,:accept,[4040]])]opts=[strategy::one_for_one,name:KVServer.Supervisor]Supervisor.start_li

performance - 当我的 Erlang TCP 代理收到许多并发请求时,为什么性能会下降那么多?

出于学习目的,我用Erlang编写了一个简单的TCP代理。它有效,但当我使用ab(ApacheBench)发出许多并发请求时,我遇到了奇怪的性能下降。让我怀疑的不是性能下降本身,而是下降的规模。后端是nginx作为web服务器。我的代理位于ab和nginx之间。这是我的代理代码。-module(proxy).-export([start/3]).start(InPort,OutHost,OutPort)->{ok,Listen}=gen_tcp:listen(InPort,[binary,{packet,0},{active,once}]),spawn(fun()->connect(L

erlang - 通过 TCP 在 Erlang 中发送二进制文件

使用下面的代码发送。gen_tcp:send调用返回{error,einval}但我不明白为什么......-define(TCP_OPTIONS,[binary,{active,false},{reuseaddr,true}]).client()->casegen_tcp:connect(to_Server(),8080,?TCP_OPTIONS)of{error,Reason}->io:format("~p~n",[Reason]);{ok,My_Socket}->Message={"stuff",hello,"data"},B_Message=term_to_binary(Mes