草庐IT

erlang-driver

全部标签

Erlang:Client ip-address, 向特定客户端发送数据包?

有没有办法在Erlang中为tcp连接获取客户端的ip地址?基于客户端连接到服务器的假设?我还想知道是否有必要向特定客户端发送特定数据包;就像服务器没有广播的情况一样,但是我需要ip地址来将数据包发送到特定的客户端,还是服务器只是为每个客户端使用一个引用(erlang:monitor)? 最佳答案 对于另一端的地址,inet:peername(Socket).然而,如果你想处理TCP对话中的每个客户端,一旦每个客户端连接,通常,你会产生单独的erlang进程来处理它,然后TransfertheSocketOwnership到产生的过

node.js - erlang 和 nodejs 之间通过 tcp 传递的数据

我需要通过tcp在nodejs和erlang进程之间传递数据。Erlang进程是一种api服务器,它从nodejs进程接收数据并进行一些处理。我想到了使用json作为数据结构,并且正在使用ejson来编码/解码消息。但是,在进行基准测试时,我发现解码速度非常慢。大约20k消息/秒。有没有更好或更快的方法通过tcp将数据发送到erlang。有没有办法让我可以在erlang中跳过这个解码过程。目前数据是这种类型的:{“事件”:“某事件”,"channel":"一些channel",erlang将使用事件和channel基于它进行一些处理。 最佳答案

tcp - Erlang get_tcp 数据包接收

我正在编写按照协议(protocol)运行的erlangtcp-server。每个数据包正好有4个字节大小。有一个特例数据包->.此数据包表明,服务器必须读取下一个PayloadLength字节的原始数据。当然,我可以接收原始数据流并在erlang代码中解析此协议(protocol)。但是我想知道,有没有办法使用内置的erlang包打包?当我的数据包以其长度开头时,我可以说[{packet,HeaderLength}]。有什么办法可以强制erlang自动将接收到的数据按4字节的chuks打包吗?UPD:我打算使用{active,once}模式。我也可以使用gen_tcp:recv(So

sockets - 在 erlang 中编写并行 TCP 服务器

“ProgrammingErlangSoftwareforaConcurrentWorld”说写一个并行的TCP服务器做这样的:start_parallel_server()->{ok,Listen}=gen_tcp:listen(...),spawn(fun()->par_connect(Listen)end).par_connect(Listen)->{ok,Socket}=gen_tcp:accept(Listen),spawn(fun()->par_connect(Listen)end),loop(Socket).loop(...)->%%handlerequesthere当s

java - Erlang 服务器,Java 客户端 - TCP 消息被拆分?

正如标题所说,我有一个用Erlang编写的服务器,一个用Java编写的客户端,它们通过TCP进行通信。我面临的问题是gen_tcp:recv显然不知道何时收到来自客户端的“完整”消息,因此将其“拆分”为多条消息。这是我正在做的一个例子(不完整的代码,试图只保留相关部分):代码二郎服务器-module(server).-export([start/1]).-define(TCP_OPTIONS,[list,{packet,0},{active,false},{reuseaddr,true}].start(Port)->{ok,ListenSocket}=gen_tcp:listen(Po

tcp - 在 erlang 中使用 tcp 发送原始二进制文件

我在erlang中有一个使用tcp的基本客户端服务器。如何将文件中的实际二进制数据发送给请求它的客户端?文件是如何分段发送的?我有这个代码{好的,套接字}=gen_tcp:connect({Ip},2345,[二进制,{数据包,4}]),这个{packet,4}是否处理双向发送的数据大小?此外,客户端如何接收数据然后对其进行处理?喜欢将其保存到文件吗?谢谢 最佳答案 是-{packet,4}将导致erlang在接收时需要一个4字节无符号大端整数长度值的数据包帧,并在发送每个数据包之前发出一个。您可以通过调用gen_tcp:send(

tcp - 在 Erlang 中如何获取客户端的 ip 和端口?

在下面的代码中,服务器正在监听端口2345。在接受来自客户端的连接后,它返回{ok,Socket}start()->{ok,Listen}=gen_tcp:listen(2345,[binary,{packet,4},{reuseaddr,true},{active,true}]),{ok,Socket}=gen_tcp:accept(Listen).我想获取客户端的IP和端口,如何通过socket解析获取? 最佳答案 使用inet:peername/1。文档中函数的描述:peername(Socket)->{ok,{Address

ssl - erlang 安全 tcp 中的 {active, N} 模式

我用ssltcp写了这个简单的代码:ssl:start().{ok,ListenSocket}=ssl:listen(9999,[{certfile,"cert.pem"},{keyfile,"key.pem"},{reuseaddr,true}]).{ok,Socket}=ssl:transport_accept(ListenSocket).ssl:ssl_accept(Socket).ssl:setopts(Socket,[{active,once}]).它工作正常,但是当我将{active,once}替换为{active,3}时,返回此错误:{error,{options,{so

erlang - Erlang 使用哪个 TCP 端口连接到远程节点?

我需要打开一个防火墙端口,以便我可以从一个Erlang节点连接到另一个。有标准端口吗? 最佳答案 您可以使用以下内核应用程序将Erlang使用的TCP端口限制为指定的时间间隔。参数:erl-kernelinet_dist_listen_min9001inet_dist_listen_max9005您还需要启用4369TCP端口,因为epmd使用它.(此端口也可以通过ERL_EPMD_PORT环境变量更改。) 关于erlang-Erlang使用哪个TCP端口连接到远程节点?,我们在Stac

erlang在window中的安装

目录一、前言二、erlang安装一、前言本节主要用于讲解erlang与rabbitmq的安装。本文作者:想当程序员的小青年二、erlang安装1.erlang的下载首先说一下下载的地址http://erlang.org  这里我们建议大家下载最新版本的erlang因为他需要和后面的rabbitmq进行适应,版本相差太大的话会导致不兼容。2.erlang安装下载完以后,大家最好自己来指定一个安装目录,因为待会配环境变量时会用到。3.配置环境变量(1)大家找到自己安装erlang的bin路径,并复制, D:\ProgramFiles\erl10.7\bin在这里我就复制到这里,怎么在目录里复制我以