-
erlang port的简单例子,exe程序给erlang的数据0x0a总是变成0x0d0a?5
写了一个简单的erlang port测试例子
但是exe应用程序写回erlang的二进制数据中,只要包含0x0Aa,都被转成0x0D0A。
调用erlang:e2:getData(1,2)都没问题,一旦e2:getData(8,2),答案为10,返回的是13
因此用testc串,凡是char值为10的都被转成了[13,10]。
有什么办法吗?
代码如下:
windows下,C程序:int fn, arg1, arg2, result; char buff[100]; int len; char testc[10]; testc[0]=0; testc[1]=0; testc[2]=0; testc[3]=6; testc[4]='a'; testc[5]=10; testc[6]='b'; testc[7]='c'; testc[8]=10; testc[9]=10; while((len = _read(0, buff, 6)) > 0){ arg1 = buff[4]; arg2 = buff[5]; result = arg1 + arg2; buff[0] = 0; buff[1]=0; buff[2] = 0; buff[3]=1; buff[4] = result; _write(1, buff, 5); //_write(1, testc, 10); }
erlang 代码:-module(e2). -compile(export_all). start()-> spawn(fun()-> register(e2,self()), process_flag(trap_exit,true), Port=open_port({spawn,"./test.exe"},[{packet,4}]), loop(Port) end). stop()-> e2!stop. getData(X, Y)-> e2!{call,self(),X, Y}, receive {e2,Result}-> Result end. loop(Port)-> receive {call,Caller,X, Y}-> Port!{self(),{command,[X,Y]}}, io:format("1.~n", []), receive {Port,{data,Data}}-> Caller!{e2,Data} end, io:format("2.~n", []), loop(Port); stop-> Port!{self(),close}, receive {Port,closed}-> exit(normal) end; {'EXIT',Port,Reason}-> exit({port_terminated,Reason}); {Port, {data, Data}} -> io:format("receive ~w ~n", [Data]), file:write_file("2.png", Data), io:format("File saved.~n", []), loop(Port) end.
2010年6月25日 15:12
相关推荐
总的来说,这个项目是为了验证和优化 Erlang 在 Linux 环境下通过 Port Driver 与外部程序交互的能力,测试可能涵盖了端口的创建、数据交换、错误处理和资源管理等多个方面。通过这样的测试,开发者可以确保他们的...
这个简单的例子展示了Erlang中基本的进程通信模式,即客户端通过发送请求到服务器,服务器处理请求后返回响应,客户端接收到响应后进行处理。这种模式在并发编程中非常常见,因为Erlang的进程模型非常适合构建分布式...
为了与Erlang进行通信,我们需要编写一个简单的C程序,该程序能够接收Erlang发送的数据,并返回结果。下面是一个具体的C程序实例: ```c #include "stdafx.h" #include int _tmain(int argc, _TCHAR* argv[]) { ...
【Erlang程序设计(第2版)】是由Erlang之父Joe Armstrong撰写的一本经典著作,专注于介绍Erlang编程语言在并发、分布式和容错系统中的应用。本书适用于初学者和有一定经验的Erlang程序员。作者在书中讨论了如何利用...
Erlang B和Erlang C是电信领域中两种重要的流量模型,用于预测和分析通信系统中的呼叫处理能力和拥塞情况。这两个模型由丹麦工程师Agner Krarup Erlang在20世纪初提出,至今仍广泛应用于现代通信网络的设计与优化。 ...
**OTP (Open Telecom Platform) for Windows 64位 25.0.1 版本:ErLang 下载** ErLang是一种高级并发编程语言,由瑞典电信设备制造商Ericsson开发,用于构建高度可靠和可扩展的分布式系统。OTP(Open Telecom ...
在深入理解Erlang程序设计的源码之前,我们需要了解Erlang的一些核心概念和特性。 1. **并发性**:Erlang的并发模型基于轻量级进程(Lightweight Processes,LWP),它们类似于操作系统中的线程,但资源消耗小得多...
erlang for windows 2025年最新版 otp_win64_27.2.1.exe
"Erlang otp_win64_21.2.exe" 是Erlang OTP在Windows 64位平台上的一个特定版本,编号为21.2。这个版本的发布意味着它包含了自上一版本以来的更新和改进,旨在提供更稳定、高效和功能丰富的开发环境。 Erlang OTP的...
标题“erlang_windows_64位安装包exe下载123123”表明这是一个专为Windows 64位操作系统设计的Erlang安装程序。这个安装包的版本是19,这意味着它包含了Erlang OTP(Open Telecom Platform)19.1版的所有组件。OTP是...
标题中的“在erlang项目中使用protobuf例子”指的是在Erlang编程环境中使用Protocol Buffers(protobuf)这一数据序列化工具。protobuf是由Google开发的一种高效、跨语言的数据表示和序列化格式,它允许开发者定义...
"Erlang 24.0(win64).exe" 是专门为Windows 64位操作系统设计的Erlang安装程序。安装过程一般包括以下步骤: 1. 下载安装包:首先,用户需要从官方渠道或可靠的下载站点获取"Erlang otp_win64_24.exe" 文件。 2. ...
Erlang,一种由Ericsson开发的面向并发的编程语言,以其在分布式系统和实时高可用性场景中的优秀性能而闻名。在Erlang中,处理大数据存储有多种方式,其中包括ETS(Erlang Term Storage)、DETS(Distributed Erlang...
Erlang是一种高级编程语言,特别适用于并发、分布式和实时系统。它由Ericsson公司开发,主要用于构建高可用性、容错性和可扩展性的软实时系统。Erlang的25.0版本是该语言的一个更新,针对Windows操作系统进行了优化...
Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,主要用于构建高可用性、分布式和容错性强的系统。在IT领域,Erlang因其强大的实时性和并发处理能力,尤其在通信、网络和云计算等领域...
这份"Erlang游戏程序学习完整PDF手册"是一份全面介绍Erlang在游戏开发中应用的学习资料,包含了Erlang的基础知识、并发原理以及在游戏开发中的实践案例。 Erlang语言的设计理念源自于Ericsson公司为解决电信系统中...
Erlang/OTP Application完整例子,含代码和二进制,对于学习Erlang/OTP Application很有帮助。 配套文章http://blog.csdn.net/mycwq/article/details/12610677
这个特定的文件"esl-erlang_22.0~windows_amd64.exe"是Erlang的二进制发行版,版本为22.0,针对Windows 64位(AMD64)架构。Erlang以其在电信、实时系统和Web服务中的高效表现而闻名,它由Ericsson公司开发,用于...
**Erlang编程:Introducing Erlang** Erlang是一种函数式编程语言,由爱立信在1986年开发,主要用于构建高可用性、容错性和并发性的分布式系统。"Introducing Erlang"是Simon St. Laurent撰写的一本入门级教程,...
这个压缩包包含了一个基于Erlang B公式的计算器程序,以及其源代码和实验报告,旨在帮助理解和应用这个公式。 Erlang B公式是由丹麦工程师A.K. Erlang提出的,用于预测在一个服务系统(如电话交换机)中有一定数量...