草庐IT

erlang_programs

全部标签

tcp - 通过 TCP Erlang 接收错误数据

我正在尝试通过TCP套接字接收一些数据。当我运行下面的代码时,我得到了输出:localhost^V^A^@,我知道如果使用二进制发送数据,你需要转换数据,但因为我发送的是一个列表,我认为它会被同样地接收到?为什么Host字符串显示正确,而其他数据却显示不正确?非常感谢任何帮助,谢谢。cell_process(Port,X,Y)->Host="localhost",Data=[Host,Port,X,Y],{ok,Socket}=gen_tcp:connect(Host,22,[list,{packet,0}]),ok=gen_tcp:send(Socket,Data),ok=gen_t

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基于它进行一些处理。 最佳答案

【C# Programming】类、构造器、静态成员

一、类1、类的概念类是现实世界概念的抽象:封装、继承、多态数据成员:类中存储数据的变量成员方法:类中操纵数据成员的函数称为成员方法对象:类的实例类定义classX{…}   varinstance=newX(…);2、实例字段        C#中,数据成员称为字段。与具体对象相关的字段称为实例字段;实例字段允许在声明时初始化,初始化语句在类构造函数前执行,例如:classEmployee{publicstringFirstName;publicstringLastName;publicstringSalary="Notenough";publicEmployee(){Salray=strin

network-programming - TCP/IP 长期连接

我有一个在Linux机器上运行的服务器应用程序。我可以从Windows/Linux机器连接这个应用程序并可以发送/接收数据。几个小时后,发生了一些事情,我在客户端收到以下错误。在Windows上:现有连接被远程主机强行关闭在Linux上:连接超时我在网络上进行了搜索,发现了一些建议增加/减少操作系统的存活时间的帖子。但是,它对我不起作用。我能找到解决这个问题的方法吗?还是我应该在连接被强行关闭时尝试重新连接到服务器?编辑:我已经跟踪了情况。我向远程节点发送了一个数据,等待5个小时后发送了另一个数据。发送方发送了第一个数据,但是发送方发送了第二个数据却没有响应。发送方的TCP/IP堆栈通

tcp - Erlang get_tcp 数据包接收

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

network-programming - 在通过本地主机传输期间,OSI 模型中使用了哪些层?

当通过本地主机地址或127.0.0.1传输数据时,OSI模型中使用了哪些层?我相信通信从应用层开始,一直向下到某个层,但没有数据通过物理层,或者有吗? 最佳答案 到127.0.0.1的流量将由TCP/IP模型的互联网层环回,这在OSI模型中由网络层匹配。这是进行路由和地址解析的层。 关于network-programming-在通过本地主机传输期间,OSI模型中使用了哪些层?,我们在StackOverflow上找到一个类似的问题: https://stacko

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(