server.erl
-module(server).
-export([start/0,start/1,process/1]).
-define(defPort, 8888).
start() -> start(?defPort).
start(Port) ->
case gen_tcp:listen(Port, [binary, {packet, 0}, {active, false}]) of
{ok, LSock} -> server_loop(LSock);
{error, Reason} -> exit({Port,Reason})
end.
%% main server loop - wait for next connection, spawn child to process it
server_loop(LSock) ->
case gen_tcp:accept(LSock) of
{ok, Sock} ->
spawn(?MODULE,process,[Sock]),
server_loop(LSock);
{error, Reason} ->
exit({accept,Reason})
end.
%% process current connection
process(Sock) ->
Req = do_recv(Sock),
Resp = "Hello, " ++ Req ++ "!",
do_send(Sock,Resp),
gen_tcp:close(Sock).
%% send a line of text to the socket
do_send(Sock,Msg) ->
case gen_tcp:send(Sock, Msg) of
ok -> ok;
{error, Reason} -> exit(Reason)
end.
%% receive data from the socket
do_recv(Sock) ->
case gen_tcp:recv(Sock, 0) of
{ok, Bin} -> binary_to_list(Bin);
{error, closed} -> exit(closed);
{error, Reason} -> exit(Reason)
end.
client.rb
require 'socket'
client = TCPSocket.open('localhost', 8888)
client.send("hideto", 0)
puts client.readlines
client.close
Erlang服务器编译运行:
Eshell > c(server.erl).
Eshell > server:start().
Ruby客户端解释运行:
> ruby client.rb
Hello, hideto!
分享到:
相关推荐
本资源包聚焦于两种编程语言——Erlang和Ruby,分别探讨如何实现常见且重要的数据结构和算法。 Erlang,一种函数式编程语言,以其并发处理能力和容错性闻名,常用于构建高可用性和分布式系统。在Erlang中,我们可以...
本文将深入探讨Erlang中的TCP和UDP socket编程,以及如何实现简单的echo服务器和客户端。 首先,我们需要了解Erlang中处理TCP socket的gen_tcp模块。gen_tcp模块提供了用于创建TCP连接的接口,它允许我们监听端口、...
基于Erlang的即时通讯系统的设计与实现
Erlang和RabbitMQ是两个在分布式系统和消息队列领域中至关重要的技术。Erlang是一种函数式编程语言,以其并发性、容错性和热代码升级能力而闻名,而RabbitMQ则是基于Erlang构建的一个开源消息代理,用于实现应用程序...
总结,"erlang与delphi多客户端通讯"这一主题涉及到Erlang和Delphi的网络编程,Socket通信,跨语言交互,以及特定端口(843)的使用。在实际项目中,开发者需要综合运用这些技术来构建稳定、高效且安全的多客户端...
【标题】"erlang和rabbitmq.zip" 涉及到的是两个关键技术:Erlang编程语言和RabbitMQ消息队列系统。Erlang是一种并发性极强、容错性出色的函数式编程语言,而RabbitMQ是基于Erlang开发的开源消息代理和队列服务器。 ...
《Erlang和OTP实战》是一本专注于Erlang编程语言和OTP(Open Telecom Platform)框架的专业书籍。这本书深入浅出地介绍了Erlang在分布式系统、并发处理以及高可用性设计中的应用,同时结合 OTP 提供了强大的工具和库...
Erlang B和Erlang C是电信领域中两种重要的流量模型,用于预测和分析通信系统中的呼叫处理能力和拥塞情况。这两个模型由丹麦工程师Agner Krarup Erlang在20世纪初提出,至今仍广泛应用于现代通信网络的设计与优化。 ...
- **Elixir**:基于Erlang VM的现代编程语言,提供了更接近Ruby的语法,同时保留了Erlang的并发特性和稳定性。 总的来说,Erlang 25.0为Windows用户带来了一个更新的、优化的并发编程环境,无论是用于开发分布式...
标签中提到了“Erlang Rabbit 异步通讯”,这意味着讨论的重点是Erlang如何与RabbitMQ结合实现异步通信。RabbitMQ是一个开源的消息代理,它遵循Advanced Message Queuing Protocol (AMQP)标准,提供了一种可靠、高效...
安装Erlang和RabbitMQ,linux系统下的哦,有红色字体标注!已踩坑
5. **语言和库更新**:Erlang的新版本通常会包含语言特性的增强和库的更新,这些改进可能会间接影响到RabbitMQ的性能和功能。 在安装这两个软件时,首先需要下载Erlang的erlang_24.2.exe文件,安装后才能运行...
Erlang是一种由Ericsson公司开发的并发性、分布式和面向对象的编程语言,特别适用于构建高可靠性、容错性和可扩展性的系统。其设计灵感来源于函数式编程,使得Erlang在处理并发问题上表现出色,尤其适合在分布式计算...
在本文中,我们将探讨如何使用Erlang编程语言和Yaws Web服务器开发RESTful服务。Erlang是一种面向并发和分布式系统的语言,以其高可靠性而著称,而Yaws是由Claes Wikström用Erlang编写的高性能Web服务器,能够处理...
"Introducing Erlang"是Simon St. Laurent撰写的一本入门级教程,旨在帮助初学者理解和掌握Erlang的核心概念和特性。 ### 1. 函数式编程基础 Erlang基于函数式编程范式,这意味着程序由纯函数构成,没有副作用。...
Erlang和RabbitMQ是两个在分布式系统和消息队列领域中至关重要的技术。Erlang是一种函数式编程语言,以其并发性、容错性和热代码升级能力而闻名,而RabbitMQ则是一个基于Erlang开发的消息中间件,广泛应用在微服务...
一般来说网络通讯常用的方式有2种:文本通讯和二进制通讯。php与erlang之间实现文本通讯比较简单,这里就不做讨论,本文主要讨论的是php与erlang实现二进制通讯的实现方法。实现步骤如下: erlang端代码: 复制代码 ...
Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,主要用于构建高可用性、分布式和实时系统。版本24.3.4.4是Erlang的一个更新版本,包含了对先前版本的改进和修复。Erlang以其强大的错误...
Erlang以其强大的并行处理能力、容错性和易于构建大规模分布式系统的特点,在电信、金融和互联网等领域广泛应用。Erlang22是Erlang的第22个主要版本,它包含了对语言特性的改进、性能优化以及一些新的库和工具。 在...
rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平台上。