`
willvvv
  • 浏览: 332013 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

erlang分布式入门(二)-UDP Server-Client

阅读更多

项目中有在UDP协议上提供的服务,需要对服务的性能进行测试和优化,便找了下使用erlang实现的udp的服务端和客户端。

 

1.udpServer.erl

-module(udpServer).
-export([start/0, client/1]).

start() ->
        spawn(fun() -> server(4000) end).

server(Port) ->
        {ok, Socket} = gen_udp:open(Port, [binary, {active, false}]),
        io:format("server opened socket:~p~n",[Socket]),
        loop(Socket).

loop(Socket) ->
        inet:setopts(Socket, [{active, once}]),
        receive
                {udp, Socket, Host, Port, Bin} ->
                        io:format("server received:~p~n",[Bin]),
                        gen_udp:send(Socket, Host, Port, Bin),
                        loop(Socket)
        end.

% Client code
client(N) ->
        {ok, Socket} = gen_udp:open(0, [binary]),
        io:format("client opened socket=~p~n",[Socket]),
        ok = gen_udp:send(Socket, "localhost", 4000, N),
        Value = receive
                                {udp, Socket, _, _, Bin} ->
                                        io:format("client received:~p~n",[Bin])
                        after 2000 ->
                                        0
                        end,
        gen_udp:close(Socket),
        Value.

 

2.在一个终端下启动服务器端

[root@centos-183 erlang-learn]# erl
Erlang R15B (erts-5.9) [source] [smp:2:2] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.9  (abort with ^G)
1> c(udpServer).
{ok,udpServer}
2> udpServer:start().
<0.39.0>
server opened socket:#Port<0.2237>
server received:<<"Hello">>
3> 

 在服务端执行udpServer:start().  之后在另外一个终端下启动客户端

[root@centos-183 erlang-learn]# erl
Erlang R15B (erts-5.9) [source] [smp:2:2] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.9  (abort with ^G)
1> udpServer:client(<<"Hello">>).
client opened socket=#Port<0.608>
client received:<<"Hello">>
ok
2> 
 
分享到:
评论

相关推荐

    erlang21.1-windows-64

    Erlang是一种高级编程语言,特别适用于并发、分布式和实时计算系统。它的设计目标是创建一个高度容错、可扩展的平台,常用于构建大规模、高可用性的电信、银行和互联网应用。标题“erlang21.1-windows-64”指的是...

    erlang-23.2.3-1.el7.x86_64.rpm和erlang-23.2.1-1.el7.x86_64.rpm.rar

    标题中的"erlang-23.2.3-1.el7.x86_64.rpm"和"erlang-23.2.1-1.el7.x86_64.rpm.rar"代表了两个不同的Erlang版本。`.rpm`文件是用于Red Hat Enterprise Linux (RHEL) 和其衍生发行版如CentOS的软件包管理格式,而`....

    [rpm] erlang-23.3-rabbitmq-server-3.8

    rpm包; 包含erlang-23.3-rabbitmq-server-3.8

    rabbitmq-server-3.8.3.exe和erlang22.2.exe 64位压缩文件

    Erlang是一种并发性极强、容错性高的编程语言,特别适合构建高可用性和可扩展性的分布式系统。 标题提到的"rabbitmq-server-3.8.3.exe"是RabbitMQ服务器的3.8.3版本安装程序,适用于64位操作系统。这个版本可能包含...

    onlyoffice的资源包,此包包括erlang和onlyoffice-documentserver

    Erlang 是一种编程语言,以其并发处理和分布式计算能力而闻名,常用于构建高可用性和容错性的系统。在OnlyOffice中,Erlang可能被用来支持后台服务和数据处理。 此资源包包含两个主要部分: 1. **Erlang 安装程序 ...

    erlang-rpm-21.3.4.zip

    "erlang-rpm-21.3.4"表示这个RPM包包含了Erlang的版本21.3.4,它可能包含编译好的二进制文件、库、配置文件以及必要的依赖信息。使用RPM包的好处在于可以方便地通过命令行工具进行安装、查询、升级和卸载,系统能够...

    erlang-xmerl-22.3-1.el7.x86_64.rpm 镜像下载

    erlang-xmerl-22.3-1.el7.x86_64.rpm,rabbitMQ安装需要依赖此环境。Erlang 是一种多用途编程语言,主要用于开发并发和分布式系统。它最初是一种专有的编程语言,Ericsson 使用它来开发电话和通信应用程序。

    最新版erlang-23.3.4.3-1.el7.x86_64.rpm(CentOS7)

    - 使用yum安装Erlang:`sudo yum install erlang-23.3.4.3-1.el7.x86_64.rpm` 2. **安装RabbitMQ**: - 下载RabbitMQ RPM包:`wget https://your_download_link/rabbitmq-server-3.8.17-1.el7.noarch.rpm` - ...

    erlang分布式 XMPP Server.ppt

    总的来说,Erlang分布式XMPP服务器利用其强大的分布式特性、丰富的扩展机制和成熟的开源社区,为构建高效、可扩展的即时通讯服务提供了坚实的基础,尤其在结合Web和移动设备的场景下,展现出巨大的潜力。

    erlang-xmerl-23.0.2-2.el7.x86_64.rpm

    erlang-xmerl-23.0.2-2.el7.x86_64.rpm,rabbitMQ安装需要依赖此环境。Erlang 是一种多用途编程语言,主要用于开发并发和分布式系统。它最初是一种专有的编程语言,Ericsson 使用它来开发电话和通信应用程序。

    erlang-18.3-1.el7.centos.x86_64.zip

    在标题中的"erlang-18.3-1.el7.centos.x86_64.zip",我们看到的是Erlang的一个特定版本,18.3,针对64位的CentOS 7操作系统(el7)的安装包。这个版本的Erlang包含了必要的组件和服务,使得它能够在CentOS 7上稳定...

    erlang-22.3-1.el7.x86_64.rpm

    总结,"erlang-22.3-1.el7.x86_64.rpm"是一个专为RabbitMQ准备的Erlang版本,适合在RHEL 7或类似系统上运行,利用Erlang的并发、分布式和容错特性来保证RabbitMQ的稳定性和效率。通过RPM包的形式,用户可以便捷地在...

    springBoot整合rabbitMQ,包括erlang20.3,rabbitmq-server-3.7.14安装包

    springBoot整合rabbitMQ,包括erlang20.3,rabbitmq-server-3.7.14安装包 整合4种常用模式+高级特性死信队列 暂未整合TTL队列 博客地址:...

    esl-erlang-25.0.3-1-centos-7-amd64.rpm erlang-25.0.3-1 rpm

    esl-erlang_25.0.3-1_centos_7_amd64.rpm erlang_25.0.3-1 rpm用于rabitmq基础环境安装

    最新最全rabbitmq与erlang版本匹配-2020-04-23.ods

    最新最全rabbitmq与erlang版本匹配-2020-04-23

    分布式的Key-Value存储系统Ringo.zip

    Ringo 是一个分布式的Key-Value存储系统,采用 ErLang 语言开发。支持磁盘数据存储。 Ringo is an experimental, distributed, replicating key-value store based on consistent hashing and immutable data. ...

    erlang-21.0.9-1.el7,rabbitmq-server-3.7.7-1.el7

    erlang-21.0.9-1.el7.centos.x86_64.rpm,rabbitmq-server-3.7.7-1.el7.noarch.rpm

    erlang-25.0-1.el8.x86_64.rpm

    erlang 安装包。 rabbitmq 安装所需要的

    erlang-asn1-19.3.6.4-1.el7.x86_64.rpm

    erlang-asn1-19.3.6.4-1.el7.x86_64.rpm

    erlang-23.1-1.el8.x86_64.rpm

    erlang-23.1-1.el8.x86_ ,erlang官网下载很慢,所以提供该下载链接。

Global site tag (gtag.js) - Google Analytics