用erlang写个tcp进程
时间: 2023-02-08 09:24:18 浏览: 61
好的,这是用 Erlang 写的一个简单的 TCP 进程的例子:
```
-module(tcp_process).
-export([start/0, loop/1]).
start() ->
{ok, ListenSocket} = gen_tcp:listen(8080, [binary, {packet, 0},
{active, false},
{reuseaddr, true}]),
loop(ListenSocket).
loop(ListenSocket) ->
{ok, Socket} = gen_tcp:accept(ListenSocket),
process_client(Socket),
loop(ListenSocket).
process_client(Socket) ->
inet:setopts(Socket, [{active, once}]),
receive
{tcp, Socket, Data} ->
handle_data(Socket, Data),
process_client(Socket);
{tcp_closed, Socket} ->
ok
end.
handle_data(Socket, Data) ->
gen_tcp:send(Socket, "ACK\n"),
io:format("Received data: ~s~n", [Data]).
```
这个进程会在本地监听 8080 端口,一旦收到客户端的连接就会处理客户端的请求。处理客户端请求的过程是在 `process_client/1` 函数中实现的,它会接收到的数据并调用 `handle_data/2` 函数来处理它。
你可以在 Erlang 控制台中调用 `tcp_process:start()` 函数来启动这个进程。