首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

在 Erlang 中,通过 TCP 发送二进制文件可以使用 gen_tcp 模块。以下是一个简单的示例,展示了如何使用 gen_tcp 模块将二进制文件发送到远程主机:

  1. 首先,确保 Erlang 已经安装在本地计算机上。
  2. 创建一个名为 send_file.erl 的文件,并将以下代码粘贴到文件中:
代码语言:erlang
复制
-module(send_file).
-export([send_file/2]).

send_file(Host, FilePath) ->
    {ok, Binary} = file:read_file(FilePath),
    {ok, Socket} = gen_tcp:connect(Host, 8080, [binary, {packet, 0}]),
    ok = gen_tcp:send(Socket, Binary),
    ok = gen_tcp:close(Socket).
  1. 编译 send_file.erl 文件:
代码语言:txt
复制
erlc send_file.erl
  1. 在 Erlang shell 中运行 send_file 函数,将二进制文件发送到远程主机:
代码语言:txt
复制
erl -noshell -s send_file send_file "remote_host" "path/to/binary/file" -s init stop

其中,remote_host 是远程主机的 IP 地址或主机名,path/to/binary/file 是要发送的二进制文件的路径。

请注意,这个示例仅用于演示目的,实际应用中可能需要添加更多的错误处理和功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

silverlight利用socket发送图片或文件

silverlight的socket使用的协议目前只有tcp协议,不知道以后会不会增加其它协议。...socket聊天室demo,我在他的基础上,增加了图片发送文件发送的演示。...的byte消息格式设计 2.发送时,文件或图片如何转化为byte数组?...问题: 图片或文件通过流转化为byte数组后,如果数组本身就包含分隔字符,会导致收到数据后“解码”失败,所以发送前,我把图片或文件数组的分隔符替换成其它字符了,但这样会导致还原时图片失真。...2.再启动silverlight项目Client 3.测试图片或文件发送时,我源代码根目录下特意放了一张小图片(test.png)及一个小文件文件(test.txt),方便大家调试 更新: [2009

1.3K50

回顾Erlang简要

世界是并行的,Erlang程序反应了一种思考和交流的方式,个体通过发送消息进行交流,如果有个体死亡,其他个体会注意到。 Erlang的模块类相当于OOPL的类,进程类似于OOPL里的对象或类实例。...Erlang的并发程序是由互相通信的多组顺序进程组成,一个进程就是一个轻量级的虚拟机,可以执行单个的Erlang函数,只能通过发送和接收消息来与其他进程通信。...Erlang: 创建和销毁进程非常快 进程间发送消息非常快 进程在所有操作系统上都具有相同的行为方式 可以拥有大量的进程 进程间不共享内存,完全独立 唯一的沟通方式是消息传递,每个进程都有一个邮箱与进程同步创建...:Erlang的整数或浮点数 2) Json字符串:Erlang二进制型 3) Json列表:Erlang列表 4) true和false 对应 5) 映射组的健必须是原子,字符串或二进制型,值必须用...3) 内置函数erlang:set_cookie(node(),C)程序中指定 Erlang通过名为端口的对象与外部程序通信,如果想端口发送一个消息,这一消息就会被发往与端口相连的外部程序,来自外部程序的消息会变成来自端口的

1.2K40
  • ffsend:命令行通过 FireFox Send 分享文件

    其他人可以通过这个工具或者网页浏览器来下载这些分享的文件。 所有的文件都是客户端加密的,并且秘钥将不会被共享到远程主机。另外,你还可以为上传的文件额外设置一个密码。...能够使用你自己的 Send 主机 审查或者删除共享文件 精准的错误报告 低内存消耗,用于加密或上传下载 无需交互,可以集成脚本 如何在 LInux 安装 ffsend 呢?...然而,我们可以轻易地根据我们自己的操作系统和架构下载到相应的预编译二进制文件。...download/v0.1.2/ffsend_0.1.2_amd64.deb $ sudo dpkg -i ffsend_0.1.2_amd64.deb 如何使用 ffsend 这并不复杂,我们可以简单地通过下面的语法来发送文件...Download complete 上面已经通过安全、私密和加密过的链接来发送文件。然而,如果你想在你的掌控范围内再添加额外的安全措施,你可以为文件添加密码。

    1.2K20

    VS通过建立依赖关系使文件结构更清晰

    一个Web应用,当你添加一个Web页面的时候,VS实际上会为你创建三个文件:Xxx.aspx, Xxx.aspx.cs和Xxx.aspx.designer.cs,后面两个文件(依赖文件)依赖于第一个文件...目录 一、文件依赖达到的效果 二、文件依赖关系定义Project文件 三、通过VS插件建立两个文件之间的依赖关系 一、文件依赖达到的效果 对于项目文件之间的依赖关系...默认的情况下,View和PresenterVS处于同一个级别,如果能够建立起它们之间的依赖关系,让Presenter文件嵌套在View文件下,在结构上将显得更加清晰(如左图所示)。 ?...再举一个例子,《如何让ASP.NET默认的资源编程方式支持非.ResX资源存储》一文,我提供了一种通过自定义ResourceProvider让ASP.NET默认的资源编成模式支持不同形式的资源存储形式...二、文件依赖关系定义Project文件 目录结构来讲,主文件和依赖文件处于相同的层级,它们的依赖关系实际上是通过Project文件(.csproj文件或者.vbproj文件)来定义的。

    1.7K110

    woof – Linux通过本地网络轻松分享交换文件

    要使用woof,只需单个文件上调用它,收件人就可以通过Web浏览器或使用命令行Web客户端访问您的共享文件,例如来自终端的cURL,HTTPie,wget或kurly(cURL替代) 。...本文中,我们将展示如何在Linux安装woof并使用它在本地网络上共享文件。...将URL发送给收件人。一旦收件人访问该文件,woof将关闭(参见下面的屏幕截图)。...通过Woof共享访问文件 注意:在上面的示例,我们使用wget命令行下载程序来获取共享文件,它会自动为下载的文件指定一个不同的名称(例如index.html)。...验证文件上载 您可以通过运行以查看更多使用选项: $ man woof 或者 $ woof -h Woof是一种小巧,简单易用的HTTP服务器,用于局域网上共享文件

    1.5K40

    Magicodes.IE.NET Core通过请求头导出多种格式文件

    原文作者:HueiFeng 前言 2.2里程碑我们增加了一些新的功能,正如标题所写通过请求头进行导出我们不同格式的文件.下面我们来看一下如何使用.通过这种方式无论是对我们的数据多用途,还是说对我们的数据校验都做到了轻松易配...的Configure()方法,UseRouting()中间件之后,注册如下中间件 public void Configure(IApplicationBuilder app) { app.UseRouting...ExportTestDataWithAttrs> Excel() { return GenFu.GenFu.ListOf(100); } 上面代码片段我们标识这个类允许被导出...同时我们需要通过Type指定我们被导出类的类型。 这样填写完后我们可以通过对该地址的调用,但是注意我们必须要添加请求头以标识被导出的文件类型。如果不添加请求头,那么此处将返回的还是json格式的数据。...TemplatePath进行指定模板地址即可 同样的我们还可以通过请求头进行标识本次请求是否是文件格式导出。

    85720

    你有没有觉得邮件发送人固定配置yml文件是不妥当的呢?SpringBoot 动态设置邮件发送

    明月当天,不知道你有没有思念的人 前言 之前其实已经写过SpringBoot异步发送邮件,但是今天一个小项目中要用到发送邮件时,我突然觉得邮件发送人只有一个,并且固定写在yml文件,就是非常的不妥当...我先说说我想要达到什么样的效果: 邮件发送人可以是多个,yml文件是兜底配置(即数据库没有一个可用时,使用yml文件配置的邮件发送人) 项目启动后,我也可以临时增加邮件发送人,或者禁用掉某个邮件发送人...465端口(SMTPS)︰它是SMTPS协议服务所使用的其中一个端口,它在邮件的传输过程是加密传输(SSL/TLS)的,相比于SMTP协议攻击者无法获得邮件内容,邮件一开始就被保护了起来。...* 思路:从数据库拿到所有可用的邮件发送人,然后封装起来,之后发送邮件时,再进行随机的选择即可。 * 另外一种方式就是这是动态的。...* 最后就是加个兜底的,如果数据库查询不到邮件发送人,我们使用配置文件发送邮件的配置。 */ if(mails!=null&&!

    1.2K40

    通过ffinode.js调用动态链接库(.so.dll文件)

    )已经有了非常成熟的C/C++编写的API,以供应用程序调用,node.js作为公司内新兴的后台runtime调用这些公共服务的时候没必要再造一遍轮子,而是可以将这些API编译成.so文件直接使用。...需要将C源码build成动态链接库以供调用,Linux下将C源码build成.so文件windows下build成.dll文件。本文只阐述.so文件的调用方法,调用.dll差别不大。...Linux下如果使用C++编写的addon来调用.so文件,需要将.so文件为系统共享。具体方法可以参看ldconfig命令,这是一个Linux下的动态链接库管理命令。...下面是如果利用ffinodejs调用这个接口,该接口的源码已经被封装成libsend_msg.so这个动态链接库了,我们直接调用就好。...ffi调用C接口传参时,C的char *类型nodejs源码可以直接用string类型表示,而对于nodejs没有的int类型,我们也可以直接写成int。

    6.3K10

    初识EMQX与安装

    比如针对物联网等数据采集场景,会有比较多的设备发送数据,通过共享订阅的方式可以订阅端设置多个订阅者来实现这几个订阅者之间的工作负载均衡 1.3 EMQ X 与物联网平台的关系是什么 典型的物联网平台包括设备硬件...;EMQ X 读取 etc/emqx.conf 和 etc/plugins/.conf 的配置后,转换为 Erlang 原生配置文件格式,并在运行时读取其中的配置。...**:EMQ X 运行时产生的日志文件 crash.dump:EMQ X 的崩溃转储文件,可以通过 etc/emqx.conf 修改配置。 erlang.log....X Broker提供的 Dashboard TOOLS 导航下的 Websocket 页面提供了一个简易但有效的 WebSocket 客户端工具,它包含了连接、订阅和发布功能,同时还能查看自己发送和接收的报文数据...两者之所有有交集,是因为一个应用场景:如何通过HTML5应用来作为MQTT的客户端,以便接受设备 消息或者向设备发送信息

    4.2K11

    通过ffiNode.js调用动态链接库(.so.dll文件)

    /C++编写的API,以供应用程序调用,node.js作为公司内新兴的后台runtime调用这些公共服务的时候没必要再造一遍轮子,而是可以将这些API编译成.so文件直接使用。...需要将C源码build成动态链接库以供调用,Linux下将C源码build成.so文件windows下build成.dll文件。本文只阐述.so文件的调用方法,调用.dll差别不大。...Linux下如果使用C++编写的addon来调用.so文件,需要将.so文件为系统共享。 具体方法可以参看ldconfig命令,这是一个Linux下的动态链接库管理命令。...下面是如果利用ffinodejs调用这个接口,该接口的源码已经被封装成libsend_msg.so这个动态链接库了,我们直接调用就好。...ffi调用C接口传参时,C的char *类型nodejs源码可以直接用string类型表示,而对于nodejs没有的int类型,我们也可以直接写成int。

    6.2K02

    通过ffinode.js调用动态链接库(.so.dll文件)

    runtime调用这些公共服务的时候没必要再造一遍轮子,而是可以将这些API编译成.so文件直接使用。...需要将C源码build成动态链接库以供调用,Linux下将C源码build成.so文件windows下build成.dll文件。本文只阐述.so文件的调用方法,调用.dll差别不大。...Linux下如果使用C++编写的addon来调用.so文件,需要将.so文件为系统共享。具体方法可以参看ldconfig命令,这是一个Linux下的动态链接库管理命令。...下面是如果利用ffinodejs调用这个接口,该接口的源码已经被封装成libsend_msg.so这个动态链接库了,我们直接调用就好。...ffi调用C接口传参时,C的char *类型nodejs源码可以直接用string类型表示,而对于nodejs没有的int类型,我们也可以直接写成int。

    6K70

    MQ - 09 RabbitMQ的架构设计与实现

    如下图所示,RabbitMQ 服务端通过 tcp_listener 监听端口, tcp_acceptor 接收请求, rabbit_reader 处理和返回请求。...msg_store_persistent 和 msg_store_transient 操作系统上是以文件夹的形式表示的,具体的数据存储是以不同的文件段的形式存储目录,所有消息都会以追加的形式写入到文件...删除消息时,不会立即删除数据,只是从 Erlang 的 ETS 表删除指定消息的相关信息,同时更新消息对应的存储文件的相关信息。...因为 Exchange 和 route_key 都是一个逻辑概念,数据是直接发送到 Broker 的,然后服务端根据路由绑定规则,将数据分发到不同的 Queue ,所以客户端是没有发送生产分区分配策略的逻辑...网络层核心数据流基于 TCP 协议通信,并通过 Connection 和 Channel 机制实现连接的复用,以减少创建的 TCP 连接数量。

    53020

    Centos7部署RabbitMQ 3.7.6

    消息传递指的是程序之间通过消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。...消息模型 从模型抽象上来说其工作过程:生产者(producer)创建消息,然后发布到队列(queue),最后将消息发送到监听的消费者(consumer)。...queue:消息队列,用来保存消息直到发送给消费者。它是消息的容器,也是消息的终点。一个消息可投入一个或多个队列。消息一直队列里面,等待消费者连接到这个队列将其取走。...# 存放rabbitmq的纲要文件 更多文件结构信息相关内容可参考:http://www.rabbitmq.com/relocate.html 怎么寻找RabbitMQ配置文件位置: 每个节点的配置信息都可以...rabbitmqadmin工具支持bash以列表的输出信息: # 开启rabbitmqadmin的列表支持功能 rabbitmqadmin --bash-completion > /etc/bash_completion.d

    1.5K40

    Scannerl:模块化分布式指纹识别引擎工具

    此外,scannerl还允许你通过几行代码轻松设置特定的指纹分析。创建指纹识别群集不仅易于设置,而且还可以通过指纹识别活动添加fine-tuned扫描来进行调整。...分布式设置 执行分布式扫描需要两种类型的节点: 主节点:scannerl二进制文件运行的地方 从节点:scannerl将连接以分发其所有工作的位置 主节点需要安装和编译scannerl,而从节点只需安装...security cookie 所有主机必须允许连接到Erlang EPMD端口(TCP/4369) 所有主机都打开了以下端口范围:TCP/11100到TCP/11100+从节点数 使用 单独使用 Scannerl...Scannerl需要使用的从节点列表可以通过-s或-S选项添加。 ....例如,fp_httpbg.erl模块允许检索HTTP响应的服务器条目。 Output module:输出到特定数据库/文件系统或以特定格式输出结果。

    57430

    深入解读RabbitMQ工作原理及简单使用

    使用场景 我们秒杀抢购商品的时候,系统会提醒我们稍等排队,而不是像几年前一样页面卡死或报错给用户。...你的应用程序和Rabbit Server之间会创建一个TCP连接,一旦TCP打开,并通过了认证,认证就是你试图连接Rabbit之前发送的Rabbit服务器连接信息和用户名和密码,有点像程序连接数据库,使用...信道是创建在“真实”TCP上的虚拟连接,AMQP命令都是通过信道发送出去的,每个信道都会有一个唯一的ID,不论是发布消息,订阅队列或者介绍消息都是通过信道完成的。 为什么不通过TCP直接发送命令?...当你把消息发送到Rabbit服务器的时候,你需要选择你是否要进行持久化,但这并不能保证Rabbit能从崩溃恢复,想要Rabbit消息能恢复必须满足3个条件: 投递消息的时候durable设置为true...不然会出现Rabbit安装之后启动不了的情况,理论上卸载的顺序也是先RabbitErlang

    4.6K21

    01 . RabbitMQ简介及部署

    消息传递指的是程序之间通过消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。 ​ 排队指的是应用程序通过 队列来通信。...通道是建立真实的TCP连接内地虚拟连接,AMQP命令都是通过信道发出去的,不管是发布消息、订阅队列还是接受消息,这些动作都是通过信道完成,因为对于操作系统来说建立和销毁TCP都是非常昂贵的开销,所以引入了信道的概念...RabbitMQ 引入了信道的概念,所有需要发布消息的线程都包装成一条信道 TCP 传输,理论上 一条 TCP 连接支持无限多个信道,模型如下: ?...cookie RabbitMQ 集群是通过 Erlang 的集群实现的,当集群的节点进行通信时,Erlang 节点会进行认证。...因此,需要在集群的所有节点上同步 cookie 文件 这里将 rabbitmq-1 的该文件复制到 rabbitmq-2,由于这个文件权限是 400 为方便传输,先修改权限,非必须操作,所以需要先修改

    96571

    深入理解消息中间件技术之RabbitMQ服务

    RabbitMQ和邮局这两者之间的主要区别是它不会处理纸质邮件,取而代之的是接收、存储和发送二进制数据块,也就是我们通常所说的消息。...6)Connection 网络连接,如:一个TCP连接 7)Channel 信道,多路复用连接中一个独立的双向数据传输通道。无论是发布消息、订阅队列、接收消息都是通过信道来完成。...RabbitMQ 最初起源于金融系统,用于分布式系统存储转发消息,易用性、扩展性、高可用性等方面表现不俗。...4)高可用(Highly Available Queues) 队列可以集群的机器上进行镜像,使得部分节点出问题的情况下队列仍然可用。...当消息进入 A 节点的 Queue 后,consumer 从 B 节点拉取时,RabbitMQ 会临时 A、B 间进行消息传输,把 A 的消息实体取出并经过 B 发送给 consumer.

    58020
    领券