TCP/SSL 套接字服務器:eSockd

dc4g 9年前發布 | 12K 次閱讀 eSockd

eSockd 是 Erlang 開發的通用的非堵塞 TCP/SSL 套接字服務器。

主要特性:

  • 通用非堵塞 TCP/SSL 套接字服務器

  • Acceptor Pool 和異步 TCP Accept.

  • 最大連接管理

  • 根據對端地址進行訪問許可

  • 支持 Keepalive

性能表現:

在 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.

項目主頁:http://www.baiduhome.net/lib/view/home/1439889435129

 本文由用戶 dc4g 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!