eSockd 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
eSockd 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
eSockd 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache
开发语言 ErLang
操作系统 Linux
软件类型 开源软件
开源组织
地区 国产
投 递 者 红薯
适用人群 未知
收录时间 2015-08-17

软件简介

eSockd 是 Erlang 开发的通用的非堵塞 TCP/SSL 套接字服务器。

主要特性:

  • 通用非堵塞 TCP/SSL 套接字服务器
  • 接受者池和异步 TCP 接受
  • UDP/DTLS 服务器
  • 最大连接管理
  • 通过对等地址允许/拒绝
  • 代理协议 V1/V2
  • Keepalive 支持
  • 速率限制
  • IPv6 支持

性能表现:

在 8 核处理器、32G内存的  ubuntu/14.04 服务器上测试结果如下:

250K concurrent connections, 50K messages/sec, 40Mbps In/Out consumed 5G memory, 20% CPU/core

一个简单的 Echo 服务器:

-module(echo_server).

-export([start_link/1]).

start_link(SockArgs) ->
   {ok, spawn_link(?MODULE, init, [SockArgs])}.

init(SockArgs = {Transport, _Sock, _SockFun}) ->
    {ok, NewSock} = esockd_connection:accept(SockArgs),
    loop(Transport, NewSock, state).

loop(Transport, Sock, State) ->
    case Transport:recv(Sock, 0) of
        {ok, Data} ->
            {ok, Name} = Transport:peername(Sock),
            io:format("~p: ~s~n", [Name, Data]),
            Transport:send(Sock, Data),
            loop(Transport, Sock, State);
        {error, Reason} ->
            io:format("tcp ~s~n", [Reason]),
            {stop, Reason}
    end.
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击加入讨论🔥(1) 发布并加入讨论🔥
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
1 评论
6 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部