php与erlang的socket,Erlang中的socket编程简单例子

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的绝大多数功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值