当前位置: 首页 > news >正文

无极在线网站播放惠州网络推广平台

无极在线网站播放,惠州网络推广平台,购物网站建设要求,阳江招聘TCP服务器上的RPC,通过创建一个服务器进程监听传入的tcp连接,并允许用户 通过此TCP流执行RPC命令 -module(tr_server). -author("chen"). -behaviour(gen_server).%% API -export([start_link/1,start_link/0,get_count/0,stop/0 ]).-export(…

TCP服务器上的RPC,通过创建一个服务器进程监听传入的tcp连接,并允许用户 通过此TCP流执行RPC命令

-module(tr_server).
-author("chen").
-behaviour(gen_server).%% API
-export([start_link/1,start_link/0,get_count/0,stop/0
]).-export([init/1, handle_call/3, handle_cast/2, handle_info/2,terminate/2, code_change/3]).-define(SERVER, ?MODULE).
-define(DEFAULT_PORT, 8000).-record(state, {port, lsock, request_count = 0}).start_link(Port) ->gen_server:start_link({local, ?SERVER}, ?MODULE, [Port], []).start_link() ->start_link(?DEFAULT_PORT).
get_count() ->gen_server:call(?SERVER, get_count).
stop() ->gen_server:cast(?SERVER, stop).init([Port]) ->{ok, LSock} = gen_tcp:listen(Port, [{active, true}]),{ok, #state{port = Port, lsock = LSock}, 0}.handle_call(get_count, _From, State) ->{reply, {ok, State#state.request_count}, State}.handle_cast(stop, State) ->{stop, normal, State}.handle_info({tcp, Socket, RawData}, State) ->do_rpc(Socket, RawData),RequestCount = State#state.request_count,{noreply, State#state{request_count = RequestCount + 1}};
handle_info(timeout, #state{lsock = LSock} = State) ->{ok, _Sock} = gen_tcp:accept(LSock),{noreply, State}.terminate(_Reason, _State) ->ok.code_change(_OldVsn, State, _Extra) ->{ok, State}.do_rpc(Socket, RawData) ->try{M, F, A} = split_out_mfa(RawData),Result = apply(M, F, A),gen_tcp:send(Socket, io_lib:fwrite("~p~n", [Result]))catch_Class:Err ->gen_tcp:send(Socket, io_lib:fwrite("~p~n", [Err]))end.split_out_mfa(RawData) ->MFA = re:replace(RawData, "\r\n$", "", [{return, list}]),{match, [M, F, A]} =re:run(MFA,"(.*):(.*)\s*\\((.*)\s*\\)\s*.\s*$",[{capture, [1,2,3], list}, ungreedy]),{list_to_atom(M), list_to_atom(F), args_to_terms(A)}.args_to_terms(RawArgs) ->{ok, Toks, _Line} = erl_scan:string("[" ++ RawArgs ++ "]. ", 1),{ok, Args} = erl_parse:parse_term(Toks),Args.

 处理TCP上的RPC请求

do_rpc(Socket, RawData) ->
  try
    {M, F, A} = split_out_mfa(RawData),
    Result = apply(M, F, A),
    gen_tcp:send(Socket, io_lib:fwrite("~p~n", [Result]))
  catch
    _Class:Err ->
      gen_tcp:send(Socket, io_lib:fwrite("~p~n", [Err]))
  end.

 在 split_out_mfa(RawData)中,解析请求数据,随后,将模块名、函数名、参数项式列表传给内置函数apply/,执行请求中的调用。最后,该函数的返回值由io_lib:fwrite/2转换为格式化文本,用作回传给用户的响应,通过套接字发送回去。

split_out_mfa(RawData) ->
  MFA = re:replace(RawData, "\r\n$", "", [{return, list}]),
  {match, [M, F, A]} =
    re:run(MFA,
      "(.*):(.*)\s*\\((.*)\s*\\)\s*.\s*$",
      [{capture, [1,2,3], list}, ungreedy]),
  {list_to_atom(M), list_to_atom(F), args_to_terms(A)}.

在 split_out_mfa(RawData)中,解析请求中的字符串。

启动服务器

利用xshell向8000端口创建一个连接。

http://www.rdtb.cn/news/22905.html

相关文章:

  • 莆田有建设网站的公司码张掖seo
  • 小程序开发费用明细怎么填seo优化易下拉排名
  • 全网黄页网站朋友圈营销
  • 网站建设门户网站推广seo教程
  • 常用的网站都有哪些西安seo主管
  • 315晚会 网站建设公司今日实时热点新闻事件
  • 临沂网站建设培训seo常用工具包括
  • wordpress游戏主题egamerseo关键词优化软件怎么样
  • 正规的招聘网站网站优化包括
  • 网站制作能赚多少钱营销活动方案模板
  • 江苏国龙翔建设网站.谷歌优化方法
  • 重新装wordpress抚州seo外包
  • 温州市网站建设公司企业模板建站
  • 深圳微网站建设泰州seo
  • 网站后台设置b站推广网站2024年不用下载
  • 新疆城乡住房建设厅网站首页google搜索下载
  • 电脑自带的做网站叫什么如何免费注册网站平台
  • 良品铺子的网站建设目标青岛网站制作推广
  • 松江品划企业网站建设下载谷歌浏览器并安装
  • 深圳创业补贴是真的吗深圳百度seo培训
  • 崇安区网站建设价格东莞疫情最新数据
  • 深圳网络推广课程宁波最好的seo外包
  • 做网站需要什么许可证优化设计方法
  • 陕西建设主管部门网站正规电商培训班
  • 德国服务器网站关键词排名规则
  • 模板网站能用吗软文写作范例大全
  • 做去态网站要学java吗搜索引擎营销总结
  • 网站建设和推广电话销售话术百度seo推广方案
  • 做pc端网站要成本么在线刷高质量外链
  • 吴江开发区建设局网站抖音指数查询