版权声明:@潘广宇博客, https://blog.csdn.net/panguangyuu/article/details/89212678
创建一个简单的顺序连接的TCP服务器:https://blog.csdn.net/panguangyuu/article/details/89211209
一、修改 tcpServer.erl
-module(tcpServer).
-export([start/0]).
start() ->
{ok, Listen} = gen_tcp:listen(2345, [binary, {packet, 4}, {reuseaddr, true}, {active, true}]),
spawn(fun() -> acceptRequest(Listen) end).
acceptRequest(Listen) ->
{ok, Socket} = gen_tcp:accept(Listen), % accpet每收到一个连接时,就创建一个进程进行处理
Process = spawn(fun() -> acceptRequest(Listen) end),
loop(Socket, Process).
loop(Socket, Process) ->
io:format("Process ~p~n", [Process]),
receive
{tcp, Socket, Bin} ->
Receive = binary_to_list(Bin),
io:format("Server received Content = ~p~n", [Receive]),
Content = Receive ++ " Hello",
gen_tcp:send(Socket, Content),
loop(Socket, Process);
{tcp_closed, Socket} ->
io:format("Server socket closed~n")
end.
二、通过spawn处理多个请求的过程
主进程A在监听端口后,首先分裂一个新进程B,进程B等待请求的到来,当第一个请求到来时,又分裂一个新进程C去等待监听第二个请求,而B进程接着处理第一个请求。