源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Erlang中的socket编程简单例子

  • 时间:2021-01-07 21:17 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Erlang中的socket编程简单例子
Erlang 中gen_tcp 用于编写TCP程序,gen_udp用于编写UDP程序。一个简单的[b]TCP服务器echo示例[/b]:
[u]复制代码[/u] 代码如下:
Start_echo_server()->          {ok,Listen}= gen_tcp:listen(1234,[binary,{packet,4},{reuseaddr,true},{active,true}]),          {ok,socket}=get_tcp:accept(Listen),          gen_tcp:close(Listen),          loop(Socket).   loop(Socket) ->          receive                   {tcp,Socket,Bin} ->                             io:format(“serverreceived binary = ~p~n”,[Bin])                             Str= binary_to_term(Bin),                             io:format(“server  (unpacked) ~p~n”,[Str]),                             Reply= lib_misc:string2value(Str),                             io:format(“serverreplying = ~p~n”,[Reply]),                             gen_tcp:send(Socket,term_to_binary(Reply)),                             loop(Socket);                    {tcp_closed,Socket} ->                             Io:format(“ServerSocket closed ~n”)          end.
[b]Tcp 的echo客户端示例: [/b]
[u]复制代码[/u] 代码如下:
echo_client_eval(Str) ->          {Ok,Socket} = gen_tcp:connect(“localhost”,2345,[binary,{packet,4}]),          ok= gen_tcp:send(Socket, term_to_binary(Str)),          receive                    {tcp,Socket,Bin}->                             Io:format(“Clientreceived binary  = ~p~n”,[Bin]),                             Val=binary_to_term(Bin),                             io:format(“Clientresult = ~p~n”,[Val]),                             gen_tcp:close(Socket)          end.
[b]UDP server示例 [/b]
[u]复制代码[/u] 代码如下:
udp_demo_server(Port) ->          {ok,Socket}= gen_udp:open(Open,[Binary]),          loop(Socket). Loop(Socket)->          receive                    {udp,Socket,Host,Port,Bin}->                             BinReply= …,                             gen_udp:send(Socket,Host,Port,BinReply),                             loop(Socket)          End.
[b]UDP client 示例: [/b]
[u]复制代码[/u] 代码如下:
udp_demo_client(Request) ->          {ok,Socket}= gen_udp:open(0,[Binary]),          ok= gen_udp:send(Socket,”localhost”,1234,Request),          Value=    receive                                      {udp,Socket,_,_,Bin}-> {ok,Bin}                             after2000 -> error                             end,          gen_udp:close(Socket),          Value
注意,因为UDP是不可靠的,一定要设一个超时时间,而且Reqeust最好小于500字节。 WebSocket, JS 和Erlang相结合,能够实现Web的绝大多数功能。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部