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