看了《erlang程序设计》的lib_chan代码,自己也试着写了一个,不过大部分代码都摘自lib_chan,做了一个改编。
-module(lib_comm).
-export([start_server/1, stop_server/1, start_client/2, send/2]).
stop_server(Port) when is_integer(Port) ->
ServerName = list_to_atom("portServer" ++ integer_to_list(Port)),
case whereis(ServerName) of
undefined ->
not_started;
Pid ->
exit(Pid, kill),
(catch unregister(ServerName)),
stopped
end.
start_server(Port) ->
io:format("start_server(), Pid: ~p~n", [self()]),
spawn(fun() -> start_port_server(Port) end).
start_port_server(Port) ->
io:format("start_port_server(), Pid: ~p~n", [self()]),
start_raw_server(Port, fun(Socket) -> start_port_instance(Socket) end, 100, 4).
start_raw_server(Port, Fun, Max, PacketLength) ->
io:format("start_raw_server(), Pid: ~p~n", [self()]),
ServerName = list_to_atom("portServer" &