`

erlang学习笔记(server/client通信)

 
阅读更多

erlang实现跨节点(节点可位于不同的计算机上)发送消息非常简单,代码如下:

-module(test).
-export([start/0,server/0,request/2]).

handle(Reqdata) ->
        "Hello " ++ Reqdata.

server() ->
        receive
                [From,{request,X}] ->
                        io:format("Get ~p from client ~p!~n",[X,From]),
                        Resp = handle(X),
                        From ! {reply,Resp},
                        server()
        end.

start() ->
        register(testserver,spawn(test,server,[])).

request(To,Name) ->
        {testserver, To} ! [self(),{request,Name}],
        receive
                {reply,Res} ->
                        io:format("Get ~p from ~p!~n",[Res,To])
        after 5000 ->
                io:format("connect failed~n",[])
        end.

1,将代码拷贝到两台主机上comA,comB上,其中comA为server端,comB为client端,这里需要确保comB配置好了comA的host

2,在comA和comB上创建~/.erlang.cookie,输入同样的内容

在服务器comA开启服务

comA:~/project # erl -sname hserver
Erlang R15B03 (erts-5.9.3.1) [source] [64-bit] [smp:2:2] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.9.3.1  (abort with ^G)
(hserver@comA)1> c(test).
{ok,test}
(hserver@comA)2> test:start().
true
Get "hello server!" from client <9327.39.0>!
(hserver@comA)3>

在客户端comB发起消息

comB:~/project # erl -sname hclient
Erlang R16B (erts-5.10.1) [source] [64-bit] [smp:2:2] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V5.10.1  (abort with ^G)
(hclient@comB)1> c(test).
{ok,test}
(hclient@comB)2> test:request(hserver@comA,"hello server!").
Get "Hello hello server!" from hserver@comA!
ok

 需要在comB的/ets/hosts中配置comB_ip comB

试了一下test:request(hserver@192.168.2.2,"hello server!").会有语法错,估计必须是通过主机名发起消息

分享到:
评论

相关推荐

    erlang 25.1 放入/root/.kerl/archives,直接./kerl build 25.1

    在Erlang的版本管理中,`kerl`是一个方便的工具,用于构建、安装和管理Erlang/OTP(Open Telecom Platform)的源代码版本。标签"erlang"表明讨论的核心是Erlang语言本身。文件名"otp_src_25.1"代表了OTP的源代码包,...

    Erlang/OTP 26.2.1

    Erlang/OTP 26.2.1,Erlang,OTP,26.2.1

    confetti, Erlang配置提供程序/应用程序.zip

    confetti, Erlang配置提供程序/应用程序 纸屑五彩纸屑是你的Erlang应用程序的配置提供程序。基本上是 application:get_env/2 在类固醇上。特性管理控制台可以通过telnet维护部门访问将为你 love在运行时重新加载( ...

    erlang 学习笔记1

    【标题】"Erlang 学习笔记1" 在深入探讨Erlang这一强大的并发编程语言之前,我们先来理解一下Erlang的基本概念。Erlang是由瑞典电信设备制造商Ericsson开发的一种函数式编程语言,它最初设计的目的是为了处理分布式...

    erlang学习笔记

    ### Erlang学习笔记:深入解析Erlang编程与系统管理 #### 1. Erlang编程基础与资源 在深入探讨Erlang编程之前,我们首先需要了解一些基础资源和学习资料。Erlang官方网站([www.erlang.org](http://www.erlang.org...

    Erlang / OTP 21.0 版本下载

    官网下载实在是困难,我把当前Erlang / OTP 21.0 版本提交到这里提供给大家和自己下载 原先积分0的现在都这么高了,为了方便大家,放出云盘地址:https://pan.百度.com/s/1hb8vPiMslXxNuJC8PvnKgg提取码wmx8

    Erlang官网下载过慢

    RabbitMQ,一个基于Erlang开发的消息队列系统,是实现异步通信的关键组件。 标题中提到的“Erlang官网下载过慢”可能是因为网络问题或者官方服务器的繁忙导致的,这对于急需安装或更新Erlang的开发者来说是一个常见...

    适用于windows版本的 Erlang25.2.3 and RabbitMQ server 3.11.9下载

    本压缩包提供的是适用于Windows操作系统的Erlang 25.2.3和RabbitMQ Server 3.11.9的下载资源,非常适合个人学习使用。 Erlang是一种函数式编程语言,由瑞典电信设备制造商Ericsson为构建高可用、容错性强的实时系统...

    erlang tcp_server

    Erlang TCP服务器是用Erlang编程语言实现的一种网络通信服务,它允许程序通过TCP协议接收和发送数据。在Erlang中,构建TCP服务器通常涉及到以下关键知识点: 1. **Erlang OTP(Open Telecom Platform)**:Erlang ...

    erlang server

    Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,用于构建高可用性、...通过阅读和理解这些代码,开发者可以学习到Erlang的并发编程技巧、网络通信以及如何实现一个简单的分布式聊天应用。

    CentOS7 安装RabbitMQ集群.docx

    baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-...

    erlang otp25 win安装包

    erlang otp25 win安装包

    rabbitmq安装相关的包,erlang.rpm/rabbitmq-server.rpm/socat.rpm

    rabbitmq安装相关的包,erlang.rpm/rabbitmq-server.rpm/socat.rpm,安装步骤看https://blog.csdn.net/qq_37846169/article/details/126085715?utm_source=app&app_version=5.5.0

    erlang_otp_win64_25.0

    Erlang OTP (Open Telephony Platform) 是一种高级并发编程语言和框架,主要由瑞典电信设备制造商Ericsson开发,用于构建高度可靠、可扩展和实时的分布式系统。Erlang OTP 25.0是该平台的一个版本,特别针对Windows ...

    Erlang-otp_win64_23.0.zip

    在Erlang环境下,RabbitMQ可以充分利用Erlang的并发性和容错性,为各种服务提供可靠的通信桥梁。因此,在部署RabbitMQ之前,必须确保Erlang OTP环境已经正确安装并且版本兼容。 安装Erlang OTP 23.0后,用户还需要...

    erlang server源码

    Erlang Server源码分析与详解 Erlang是一种面向并发的、函数式编程语言,以其在分布式系统、高可用性和容错性方面的优势而受到广泛关注。尤其在构建大规模聊天室服务器这样的实时通信系统中,Erlang的性能表现突出...

    erlang20.3+rabbitmq server.rar

    标题中的"erlang20.3+rabbitmq server.rar"表明这是一个包含Erlang OTP版本20.3和RabbitMQ服务器的压缩包,专为在Windows操作系统上部署RabbitMQ设计。Erlang是一种并发性极强的编程语言,主要用于构建高可用性和...

    erlang分布式 XMPP Server.ppt

    XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通信协议,最初由Jabber项目创建,后来被IETF接纳为互联网标准草案。它旨在提供安全、可扩展且灵活的即时通讯(IM)和在线状态服务。XMPP的...

    Erlang22.2和RabbitMQ3.8.2安装包(Windows64位)

    otp_win64_22.2.exe ...rabbitmq-server-3.8.2.exe windows64位下 欢迎下载 官网地址: Erlang:https://www.erlang.org/downloads RabbitMQ:https://www.rabbitmq.com/install-windows.html

    erlang学习相关资料

    Joe的那篇erlang论文 Programming Erlang + 源码包 Erlang Programming Concurrent Programming in Erlang efficiecy guide 资源齐全.希望能帮到你.

Global site tag (gtag.js) - Google Analytics