erlang聊天室

本人大三出来找实习单位,本来是学嵌入式的,但对C++比较感兴趣,所以打算找一份C++相关的工作,参加了几个面试,也拿了好几份offer,有两家公司我是比较中意的,一家是C++音视频(大公司),另一家是C++游戏公司(游戏公司),最终在金钱的诱惑面前我去了小公司。

小公司进去的时候,主管让我学一门语言,叫erlang,以前听都没有听过的语言,然后给我一本erlang程序设计书,是中文版的还不错,由于我是学嵌入式的,对linux操作系统比较熟悉,所有让我安装这些软件配置这些我半天就完成,本人C语言还是不错了,做过比较多得项目,都是兴趣项目,所以erlang我还是学得比较快。

差不多但四天的时间,我把erlang那本书学完了,了解了基本的语法和数据结构这些。第二周,我们后端的主管,也就是招我进去的那个人给了我一个小练习,让我做一个聊天室,需求如下:

用erlang实现一个多人聊天室
%% 基于tcp协议,客户端服务端都用erlang实现
%% 客户端调用client:connect可以连接服务器
%%                :create_channel可以创建频道
%%                :list_channel可以列出频道
%%                :join_channel可以加入特定频道
%%                :quick_channl可以退出当前频道
%%                :talk可以在频道内讲话
%%                :user可以列出频道内的用户
%% 提示:命令都在终端采用函数调用,输出都打印到终端

因为我以前也用c语言做过关于服务器的小项目,据我现在了解到的,服务器与客户端的关系差不多就是请求和给出相应的响应,所以我差不多花了一天半的时间,不过给大佬验收的时候出了点小bug,是套接字阻塞和当前进程终端输出问题,当初找出bug给大佬解释了一番(大佬满意的点点头,嘿嘿),下面就是完整的代码。

sever1

%%%-------------------------------------------------------------------
%%% @author 94217
%%% @copyright (C) 2018, <COMPANY>
%%% @doc
%%%
%%% @end
%%% Created : 13. 十一月 2018 15:32
%%%-------------------------------------------------------------------
-module(sever1).
-author("94217").
-export([start/0,
        create_chanel/2,
        loop/1]).

% 启动一个服务器
start() ->
    %创建一个全局的ets表,存放频道名和频道内的用户
    ets:new(channel, [bag, public, named_table, {write_concurrency, true}, {read_concurrency, true}]),

    case gen_tcp:listen(6789,[binary,{packet,4},{reuseaddr,true},{active,true}]) of
        {ok,Listen} ->
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值