`
hideto
  • 浏览: 2700574 次
  • 性别: 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语言被认为是“当今最有前途的程序设计语言之一”,这主要归功于其独特的设计哲学和高效的并发模型。 #### 二、Erlang语言的设计理念 Erlang的设计核心是面向并发世界。正如书中引用Joe ...

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

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

    Erlang中的socket编程简单例子

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

    erlang 程序设计 源码

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

    gcm-erlang, 用于Google云消息传递的Erlang应用程序.zip

    gcm-erlang, 用于Google云消息传递的Erlang应用程序 gcm 软件提供了一个用于 Google Cloud Messaging的Erlang客户机。,你可以对 gcm-erlang做什么:你可以以使用 gcm-erlang:启动几个代表由不同 GCM API keys 定义...

    erlang -c语言程序接口.pdf

    为了与Erlang进行通信,我们需要编写一个简单的C程序,该程序能够接收Erlang发送的数据,并返回结果。下面是一个具体的C程序实例: ```c #include "stdafx.h" #include int _tmain(int argc, _TCHAR* argv[]) { ...

    编写分布式的Erlang程序:陷阱和对策

    ### 编写分布式的Erlang程序:陷阱和对策 #### 摘要与背景 在探讨编写分布式的Erlang程序时,本篇文章聚焦于Erlang编程语言中的分布式特性,尤其是那些容易忽视的陷阱及其对应的解决方案。Erlang作为一种专为构建...

    chronica, Erlang应用程序的日志框架.zip

    chronica, Erlang应用程序的日志框架 [This document translated on russian] ( https://github.com/eltex-ecss/chronica/blob/master/README_RU.md )概述Chro

    Erlang应用程序接口(视频,1/4)

    这是第一卷。 在2008 CN Erlounge III的“Erlang应用程序接口”讲演的视频。PPT等其它资料在这里: http://blog.csdn.net/aimingoo/archive/2009/01/14/3777765.aspx 有关信息参见: ...

    Erlang应用程序接口(视频,4/4)

    这是第四卷。 在2008 CN Erlounge III的“Erlang应用程序接口”讲演的视频。PPT等其它资料在这里: http://blog.csdn.net/aimingoo/archive/2009/01/14/3777765.aspx 有关信息参见: ...

    用Erlang写了个解八数码的小程序

    标题中的“用Erlang写了个解八数码的小程序”指的是使用Erlang编程语言实现的一个解决8数码问题(也称为滑动拼图)的算法。8数码问题是一个经典的计算机科学问题,它涉及到在一个3x3的网格上,通过空格与其他数字...

    Erlang应用程序接口 - Topic at CN Erlounge III

    我在Erlounge III大会上的讲演PPT。 相关的视频在这里: http://groups.google.com/group/erlang-china/browse_thread/thread/2154c39503795edc

    confetti, Erlang配置提供程序/应用程序.zip

    confetti, Erlang配置提供程序/应用程序 纸屑五彩纸屑是你的Erlang应用程序的配置提供程序。基本上是 application:get_env/2 在类固醇上。特性管理控制台可以通过telnet维护部门访问将为你 love在运行时重新加载( ...

    erlang编程 Introducing Erlang

    分布式Erlang使用虚拟机(VM)的克隆,使得构建大规模分布式系统变得简单。 ### 7. 错误处理与恢复 Erlang采用“let it crash”哲学,鼓励程序在遇到错误时立即崩溃,而不是尝试恢复。这样可以快速暴露问题,便于...

    rebar工具开发erlang工程项目和发布erlang工程项目

    在Erlang开发中,rebar是一个非常重要的构建工具,它可以帮助我们管理和编译Erlang应用程序,同时支持发布功能。本文以nitrogen_2.0.4框架为例,详细阐述使用rebar进行Erlang项目开发和发布的全过程。 ### 一、环境...

    erlang趣学指南

    Erlang是一门专为构建并发、容错的分布式系统而设计的编程语言,最早由瑞典电信设备公司爱立信所开发。其关键特性包括轻量级进程、消息传递、容错机制以及一个用于构建可靠系统的函数库和中间件,统称为Open Telecom...

    erlang windows 安装程序 otp-win64

    erlang for windows 2025年最新版 otp_win64_27.2.1.exe

    handler socket erlang client

    handlersocket是基于mysql的nosql解决方案,与普通的nosql方案比较,具有更大的灵活性,可以使用mysql的索引。性能相比于mysql的批量操作方式,具有5倍左右的提升(我测试的,可能是内存设置的不多)。...

Global site tag (gtag.js) - Google Analytics