草庐IT

erlang-nif

全部标签

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

tcp - Erlang中socket的 "packet"选项怎么能把tcp传输加速这么多?

使用{packet,4}通过本地主机上的两个不同端口传输1G数据仅需8秒,而使用{packet,raw}无法在30秒内完成同一任务。我知道如果使用后一种方法,数据将以数万个小块的形式到达(在archlinux上大小为1460字节)。我已经了解了TCP/IP协议(protocol)的某些方面,并且已经思考这个问题好几天了,但仍然无法弄清楚确切的区别是什么。真诚期待一些自下而上的解释。-module(test).-export([main/1]).-define(SOCKOPT,[binary,{active,true},{packet,4}]).main(_)->{ok,LSock}=g

sockets - Erlang gen_tcp 连接问题

简单的问题...这段代码..client()->SomeHostInNet="localhost"%tomakeitrunnableononemachine{ok,Sock}=gen_tcp:connect(SomeHostInNet,5678,[binary,{packet,0}]),ok=gen_tcp:send(Sock,"SomeData"),ok=gen_tcp:close(Sock).很清楚,只是我不太明白[binary,{packet,0}]是什么意思?有人愿意解释一下吗?疯狂的塞布 最佳答案 根据gen_tcp:co