项目中有在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>
分享到:
相关推荐
onlyoffice的资源包,资源包太大了分2个压缩包上传,此包包括erlang和onlyoffice-documentserver
erlang分布式 XMPP Seerlang分布式 XMPP Serverrvererlang分布式 XMPP Servererlang分布式 XMPP Server
rpm包; 包含erlang-23.3-rabbitmq-server-3.8
erlang-asn1-19.3.6.4-1.el7.x86_64.rpm
rabbitmq-server-3.8.17-1.el8.noarch.rpm可用的erlang
windows系统安装erlang21.1-64 主要用于windows系统安装rabbitmq
rabbitmq-server-3.8.3.exe和erlang22.2.exe 2020年3月最新版本, 64位
erlang-xmerl-23.0.2-2.el7.x86_64.rpm,rabbitMQ安装需要依赖此环境。Erlang 是一种多用途编程语言,主要用于开发并发和分布式系统。它最初是一种专有的编程语言,Ericsson 使用它来开发电话和通信应用程序。
springBoot整合rabbitMQ,包括erlang20.3,rabbitmq-server-3.7.14安装包 整合4种常用模式+高级特性死信队列 暂未整合TTL队列 博客地址:...
erlang-21.0.9-1.el7.centos.x86_64.rpm,rabbitmq-server-3.7.7-1.el7.noarch.rpm
esl-erlang_25.0.3-1_centos_7_amd64.rpm erlang_25.0.3-1 rpm用于rabitmq基础环境安装
Ringo 是一个分布式的Key-Value存储系统,采用 ErLang 语言开发。支持磁盘数据存储。 Ringo is an experimental, distributed, replicating key-value store based on consistent hashing and immutable data. ...
erlang-23.1-1.el8.x86_ ,erlang官网下载很慢,所以提供该下载链接。
erlang-18.3-1.el7.centos.x86_64.rpm安装包,安装RabbitMQ所需依赖
erlang-xmerl-22.2.2-1.el7.x86_64.rpm 免费下载0积分镜像下载。rabbitMQ安装需要依赖此环境。Erlang 是一种多用途编程语言,主要用于开发并发和分布式系统。它最初是一种专有的编程语言,Ericsson 使用它来开发电话和...
erlang-24.3.3-1.el9.x86_64.rpm centos
包括erlang-23.3.4.3-1.el7.x86_64.rpm和rabbitmq-server-3.8.17-1.el7.noarch.rpm以及安装步骤
https://blog.51cto.com/7794482/2436678 可根据文档进行部署,redis+mysql+mq的插件 rabbitmq 安装时需要该插件
erlang-xmerl-22.2.3-1.el7.x86_64.rpm 免费下载0积分镜像下载。rabbitMQ安装需要依赖此环境。Erlang 是一种多用途编程语言,主要用于开发并发和分布式系统。它最初是一种专有的编程语言,Ericsson 使用它来开发电话和...
Erlang-game-server开发实践.pdf