這篇文章主要介紹了Erlang中的socket編程簡單例子,本文給出了TCP服務器echo示例、Tcp 的echo客戶端示例、UDP server示例、UDP client 示例,需要的朋友可以參考下
Erlang 中gen_tcp 用于編寫TCP程序,gen_udp用于編寫UDP程序,
Erlang中的socket編程簡單例子
。一個簡單的TCP服務器echo示例:代碼如下:
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.
Tcp 的echo客戶端示例:
代碼如下:
echo_client_eval(Str) ->
{Ok,Socket} = gen_tcp:connect(“l(fā)ocalhost”,2345,[binary,{packet,4}]),
k= 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.
UDP server示例
代碼如下:
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.
UDP client 示例:
代碼如下:
udp_demo_client(Request) ->
{ok,Socket}= gen_udp:open(0,[Binary]),
k= 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字節(jié),
電腦資料
《Erlang中的socket編程簡單例子》(http://m.msguai.com)。WebSocket, JS 和Erlang相結合,能夠實現Web的絕大多數功能。