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!
分享到:
相关推荐
这些接口通常通过socket通信协议实现,如http://dryverl.objectweb.org/和http://publish.itpub.net/zt/erlang/index.html提供的资源所示。内部扩展接口则是为C语言这样的低级别语言设计的,以便更直接地与Erlang...
它支持多种编程语言,包括C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Node.js, Smalltalk等,使服务跨语言交互变得容易。 **6. 性能优化** Thrift提供了多种传输和协议选项,可以根据实际需求选择...
Erlang Eslint Express web框架 Git教程 go语言 http html Immutable javascript Lodash Lua Nginx PHPUnit测试工具 python教程 React前端框架 React native APP框架 Redis Redux Ruby Sass Scikit image图像中件...
Thrift框架通过接口描述语言(IDL)来定义服务,支持多种编程语言,如C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk等,并能生成相应语言的服务端和客户端代码。其传输数据采用二进制...
RabbitMQ 由 Erlang 语言开发,支持多种编程语言的客户端,包括 Python、Ruby、Java、.NET 等。 在 RabbitMQ 中,以下是一些关键概念: 1. **ConnectionFactory**:它是创建 **Connection** 的工厂类,负责建立到 ...
它是一个接口定义语言(IDL),允许开发者定义服务接口和服务结构,然后自动生成跨语言的代码,支持C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa等多种语言。Thrift的主要优点在于其轻量级的...
uWSGI的进程控制程序是用C语言编写的,因此性能优异,支持多种应用框架,包括Python、Lua、Ruby、Erlang和Go等。 #### 4. mod_python mod_python是Apache的一个模块,能够将Python脚本嵌入到Apache服务器中。然而...