0 0

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

1个答案 按时间排序 按投票排序

0 0

无人回答,关闭

2010年7月11日 22:42

相关推荐

    erlang port driver test

    总的来说,这个项目是为了验证和优化 Erlang 在 Linux 环境下通过 Port Driver 与外部程序交互的能力,测试可能涵盖了端口的创建、数据交换、错误处理和资源管理等多个方面。通过这样的测试,开发者可以确保他们的...

    erlang 连接学习例子

    这个简单的例子展示了Erlang中基本的进程通信模式,即客户端通过发送请求到服务器,服务器处理请求后返回响应,客户端接收到响应后进行处理。这种模式在并发编程中非常常见,因为Erlang的进程模型非常适合构建分布式...

    erlang -c语言程序接口.pdf

    为了与Erlang进行通信,我们需要编写一个简单的C程序,该程序能够接收Erlang发送的数据,并返回结果。下面是一个具体的C程序实例: ```c #include "stdafx.h" #include int _tmain(int argc, _TCHAR* argv[]) { ...

    Erlang程序设计(第2版)1

    【Erlang程序设计(第2版)】是由Erlang之父Joe Armstrong撰写的一本经典著作,专注于介绍Erlang编程语言在并发、分布式和容错系统中的应用。本书适用于初学者和有一定经验的Erlang程序员。作者在书中讨论了如何利用...

    ErlangB和ErlangC计算工具(exe可执行文件+excel两个)

    Erlang B和Erlang C是电信领域中两种重要的流量模型,用于预测和分析通信系统中的呼叫处理能力和拥塞情况。这两个模型由丹麦工程师Agner Krarup Erlang在20世纪初提出,至今仍广泛应用于现代通信网络的设计与优化。 ...

    otp-win64-25.0.1.exe ErLang 下载

    **OTP (Open Telecom Platform) for Windows 64位 25.0.1 版本:ErLang 下载** ErLang是一种高级并发编程语言,由瑞典电信设备制造商Ericsson开发,用于构建高度可靠和可扩展的分布式系统。OTP(Open Telecom ...

    erlang 程序设计 源码

    在深入理解Erlang程序设计的源码之前,我们需要了解Erlang的一些核心概念和特性。 1. **并发性**:Erlang的并发模型基于轻量级进程(Lightweight Processes,LWP),它们类似于操作系统中的线程,但资源消耗小得多...

    erlang windows 安装程序 otp-win64

    erlang for windows 2025年最新版 otp_win64_27.2.1.exe

    Erlang otp_win64_21.2.exe

    "Erlang otp_win64_21.2.exe" 是Erlang OTP在Windows 64位平台上的一个特定版本,编号为21.2。这个版本的发布意味着它包含了自上一版本以来的更新和改进,旨在提供更稳定、高效和功能丰富的开发环境。 Erlang OTP的...

    erlang _windows_ 64位安装包exe下载123123

    标题“erlang_windows_64位安装包exe下载123123”表明这是一个专为Windows 64位操作系统设计的Erlang安装程序。这个安装包的版本是19,这意味着它包含了Erlang OTP(Open Telecom Platform)19.1版的所有组件。OTP是...

    在erlang项目中使用protobuf例子

    标题中的“在erlang项目中使用protobuf例子”指的是在Erlang编程环境中使用Protocol Buffers(protobuf)这一数据序列化工具。protobuf是由Google开发的一种高效、跨语言的数据表示和序列化格式,它允许开发者定义...

    Erlang 24.0(win64).exe

    "Erlang 24.0(win64).exe" 是专门为Windows 64位操作系统设计的Erlang安装程序。安装过程一般包括以下步骤: 1. 下载安装包:首先,用户需要从官方渠道或可靠的下载站点获取"Erlang otp_win64_24.exe" 文件。 2. ...

    Erlang6大数据存储方式总结

    Erlang,一种由Ericsson开发的面向并发的编程语言,以其在分布式系统和实时高可用性场景中的优秀性能而闻名。在Erlang中,处理大数据存储有多种方式,其中包括ETS(Erlang Term Storage)、DETS(Distributed Erlang...

    erlang25.0 windows版本

    Erlang是一种高级编程语言,特别适用于并发、分布式和实时系统。它由Ericsson公司开发,主要用于构建高可用性、容错性和可扩展性的软实时系统。Erlang的25.0版本是该语言的一个更新,针对Windows操作系统进行了优化...

    官网windwos版Erlang(otp_win64_24.3.4.exe)

    Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,主要用于构建高可用性、分布式和容错性强的系统。在IT领域,Erlang因其强大的实时性和并发处理能力,尤其在通信、网络和云计算等领域...

    Erlang游戏程序学习完整PDF手册

    这份"Erlang游戏程序学习完整PDF手册"是一份全面介绍Erlang在游戏开发中应用的学习资料,包含了Erlang的基础知识、并发原理以及在游戏开发中的实践案例。 Erlang语言的设计理念源自于Ericsson公司为解决电信系统中...

    Erlang/OTP Application完整例子

    Erlang/OTP Application完整例子,含代码和二进制,对于学习Erlang/OTP Application很有帮助。 配套文章http://blog.csdn.net/mycwq/article/details/12610677

    esl-erlang_22.0~windows_amd64.exe.7z

    这个特定的文件"esl-erlang_22.0~windows_amd64.exe"是Erlang的二进制发行版,版本为22.0,针对Windows 64位(AMD64)架构。Erlang以其在电信、实时系统和Web服务中的高效表现而闻名,它由Ericsson公司开发,用于...

    erlang编程 Introducing Erlang

    **Erlang编程:Introducing Erlang** Erlang是一种函数式编程语言,由爱立信在1986年开发,主要用于构建高可用性、容错性和并发性的分布式系统。"Introducing Erlang"是Simon St. Laurent撰写的一本入门级教程,...

    Erlang B公式计算器

    这个压缩包包含了一个基于Erlang B公式的计算器程序,以及其源代码和实验报告,旨在帮助理解和应用这个公式。 Erlang B公式是由丹麦工程师A.K. Erlang提出的,用于预测在一个服务系统(如电话交换机)中有一定数量...

Global site tag (gtag.js) - Google Analytics