hideto 发表于 2013-2-4 19:36:07

最简单的Erlang Socket程序

server.erl:
-module(server).-export().start() ->    {ok,Listen}=gen_tcp:listen(2345,),    {ok,Socket}=gen_tcp:accept(Listen),    gen_tcp:close(Listen),    loop(Socket).loop(Socket) ->    receive      {tcp,Socket,Bin} ->            io:format("Server received binary = ~p~n",),            Str=binary_to_term(Bin),            io:format("Server (unpacked) ~p~n",),            Reply= Str ++ "** MLGB!",            io:format("Server replying = ~p~n",),            gen_tcp:send(Socket,term_to_binary(Reply)),            loop(Socket);      {tcp_closed,Socket} ->            io:format("Server socket closed~n")    end.

client.erl:
-module(client).-export().start(Str) ->{ok, Socket} =   gen_tcp:connect("localhost", 2345, ),    ok = gen_tcp:send(Socket, term_to_binary(Str)),    receive      {tcp, Socket, Bin} ->      io:format("Client received binary = ~p~n", ),      Val = binary_to_term(Bin),      io:format("Client result = ~p~n", ),      gen_tcp:close(Socket)    end.

编译:
Eshell > c(server).Eshell > c(client).

启动server:
Eshell > server:start().

启动client:
Eshell > client:start("sb").

server端输出:
Server received binary = <<131,107,0,2,115,98>>Server (unpacked) "sb"Server replying = "sb** MLGB!"Server socket closed

client端输出:
Client received binary = <<131,107,0,10,115,98,42,42,32,77,76,71,66,33>>Client result = "sb** MLGB!"
页: [1]
查看完整版本: 最简单的Erlang Socket程序