`
hideto
  • 浏览: 2682850 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

最简单的Erlang Socket程序

阅读更多
server.erl:
-module(server).
-export([start/0]).

start() ->
    {ok,Listen}=gen_tcp:listen(2345,[binary,{packet,4},
                                            {reuseaddr,true},
                                            {active,true}]),
    {ok,Socket}=gen_tcp:accept(Listen),
    gen_tcp:close(Listen),
    loop(Socket).

loop(Socket) ->
    receive
        {tcp,Socket,Bin} ->
            io:format("Server received binary = ~p~n",[Bin]),
            Str=binary_to_term(Bin),
            io:format("Server (unpacked) ~p~n",[Str]),
            Reply= Str ++ "** MLGB!",
            io:format("Server replying = ~p~n",[Reply]),
            gen_tcp:send(Socket,term_to_binary(Reply)),
            loop(Socket);
        {tcp_closed,Socket} ->
            io:format("Server socket closed~n")
    end.


client.erl:
-module(client).
-export([start/1]).

start(Str) ->
  {ok, Socket} = 
    gen_tcp:connect("localhost", 2345, [binary, {packet, 4}]),
    ok = gen_tcp:send(Socket, term_to_binary(Str)),
    receive
      {tcp, Socket, Bin} ->
        io:format("Client received binary = ~p~n", [Bin]),
        Val = binary_to_term(Bin),
        io:format("Client result = ~p~n", [Val]),
        gen_tcp:close(Socket)
    end.


编译:
Eshell > c(server).
Eshell > c(client).


启动server:
Eshell > server:start().


启动client:
Eshell > client:start("sb").


server端输出:
Server received binary = <<131,107,0,2,115,98>>
Server (unpacked) "sb"
Server replying = "sb** MLGB!"
Server socket closed


client端输出:
Client received binary = <<131,107,0,10,115,98,42,42,32,77,76,71,66,33>>
Client result = "sb** MLGB!"
分享到:
评论

相关推荐

    Erlang程序设计(第2版)1

    【Erlang程序设计(第2版)】是由Erlang之父Joe Armstrong撰写的一本经典著作,专注于介绍Erlang编程语言在并发、分布式和容错系统中的应用。本书适用于初学者和有一定经验的Erlang程序员。作者在书中讨论了如何利用...

    最新版erlang安装包程序下载

    在“最新版erlang安装包程序下载”中,提到的“otp_win64_25.0.1.exe”是一个Windows 64位版本的Erlang OTP(开放电信平台)的安装程序。OTP是Erlang的标准库和框架集合,包含了各种模块和服务,如分布式计算、监控...

    Erlang程序设计(第二版)及源码

    书中兼顾了顺序编程、并发编程和分布式编程,重点介绍如何编写并发和分布式的Erlang程序以及如何在多核CPU上自动加速程序,并深入地讨论了开发Erlang应用中至关重要的文件和网络编程、OTP、ETS和DETS等主题。...

    erlang程序设计与入门

    **Erlang程序设计与入门** Erlang是一种并发、函数式编程语言,主要用于构建分布式、高可用性、容错性强的系统。它的设计灵感来源于电信行业的需求,由瑞典爱立信公司于1986年开发。Erlang以其独特的并发模型、轻量...

    erlang程序设计相关例子程序

    通过对这些文件名的分析,我们可以看出这些Erlang程序涵盖了并发处理、进程通信、异常处理、服务器设计、数据处理和测试等多个方面,体现了Erlang在构建分布式系统中的强大功能。学习并理解这些示例,对于深入掌握...

    Erlang程序设计,包含完整目录和全套源码

    这个压缩包包含了Erlang程序设计的完整目录和源码,是学习和理解Erlang编程的重要资源。 Erlang的并发特性源于其轻量级进程模型,每个进程都有自己的内存空间,进程间通信通过消息传递实现,这种设计降低了并发执行...

    Erlang程序设计 第2版

    Erlang程序设计 第2版 Erlang程序设计 第2版Erlang程序设计 第2版

    [Erlang程序设计]源代码

    Erlang的节点(node)概念使得跨机器通信变得简单。源代码中可能包含`net_adm`和`erlang`模块的用例,用于节点的连接和通信,以及`rpc`模块的使用,展示如何远程调用其他节点上的函数。 通过深入研究这些源代码,你...

    Erlang程序设计中文版

    **Erlang程序设计中文版**是一本深入探讨Erlang编程语言的书籍,旨在帮助开发者理解和掌握这种在并发处理和分布式系统中广泛使用的语言。Erlang以其强大的错误恢复能力、热代码替换以及对大规模并发的支持而闻名,是...

    erlang 语言程序设计

    根据描述中的信息,Erlang语言被认为是“当今最有前途的程序设计语言之一”,这主要归功于其独特的设计哲学和高效的并发模型。 #### 二、Erlang语言的设计理念 Erlang的设计核心是面向并发世界。正如书中引用Joe ...

    Erlang游戏程序学习完整PDF手册

    这份"Erlang游戏程序学习完整PDF手册"是一份全面介绍Erlang在游戏开发中应用的学习资料,包含了Erlang的基础知识、并发原理以及在游戏开发中的实践案例。 Erlang语言的设计理念源自于Ericsson公司为解决电信系统中...

    Erlang程序设计及源码

    本资源包含了一本Erlang程序设计的入门经典书籍及其配套源码,适合初学者深入理解Erlang编程。 1. **Erlang简介** Erlang以其强大的并发处理能力而闻名,它采用了轻量级进程模型,使得在单个系统中可以同时运行...

    Erlang中的socket编程简单例子

    本文将深入探讨Erlang中的TCP和UDP socket编程,以及如何实现简单的echo服务器和客户端。 首先,我们需要了解Erlang中处理TCP socket的gen_tcp模块。gen_tcp模块提供了用于创建TCP连接的接口,它允许我们监听端口、...

    Erlang程序设计及源代码打包

    1. **进程**:在Erlang中,进程是非常轻量级的,每个进程都有自己的内存空间,通信通过消息传递实现,这使得并发执行变得简单且高效。 2. **函数式编程**:Erlang鼓励使用纯函数,即函数的结果仅取决于输入,不依赖...

    erlang程序设计2

    erlang发明者写的书。erlang/otp一种高可靠性的平台。

    Erlang并发编程,Erlang程序设计,Erlang中文手册

    Erlang并发编程,Erlang程序设计,Erlang中文手册。 学习erlang的好资料。  Erlang是一个结构化,... 使用Erlang来编写分布式应用要简单的多,因为它的分布式机制是透明的:对于程序来说并不知道自己是在分布式运行。

    Erlang程序设计].源代码

    2. 并发处理:Erlang的进程模型使得并发编程变得简单且高效。每个进程都是轻量级的,相互之间通过消息传递进行通信。你可以从源码中学习如何创建、管理和通信进程。 3. OTP(Open Telecom Platform):OTP是Erlang...

    erlang 程序设计 源码

    10. **并行性与分布式**:Erlang节点可以相互通信,形成分布式集群,这使得构建大规模分布式系统变得简单。 在分析Erlang源码时,重点关注以下方面: - **进程间的交互**:查看进程是如何创建、通信和结束的,理解...

Global site tag (gtag.js) - Google Analytics