Erlang的socket 编程简例
来源:互联网 发布:钱龙软件 编辑:程序博客网 时间:2024/06/03 22:59
Erlang 中gen_tcp 用于编写TCP程序,gen_udp用于编写UDP程序。一个简单的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(“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.
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]),
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的绝大多数功能。
- Erlang的socket 编程简例
- Erlang 的Socket编程
- erlang的Socket参数含义
- Erlang 编程之socket 单用户客户端通讯
- erlang的io编程
- erlang socket
- erlang编程的那些事儿
- Erlang编程风格的对比
- erlang的编程之美
- erlang和as3 socket的二进制通信
- C#与Erlang的一次Socket通信
- Php与Erlang的Socket通信
- 基于erlang语言的socket通信
- Flash Socket 和 Erlang Socket 通信的注意事项
- 学习Erlang编程(先前的博客)
- Erlang的并行编程时代即将来临
- 面向并发的编程语言Erlang
- WhatsApp背后的小众编程语言:Erlang
- [libevent源码分析] event_add
- [libevent源码分析] event_base_dispatch
- jQuery.extend 函数详解
- Amazon电面题目-sort 100 IP addresses
- 2sum
- Erlang的socket 编程简例
- BZOJ 2819 Nim (树链剖分+线段树)
- DNA排序 poj
- 34个Android常用adb shell命令汇总
- Debian中配置JDK的环境
- 数据挖掘笔记(1)
- BZOJ 1570 JSOI 2008 Blue Mary的旅行 网络流
- java包访问权限和包导入
- JavaSe集合总结