一个进程控制多个socket

来源:互联网 发布:淘宝上的费列罗真假 编辑:程序博客网 时间:2024/06/15 04:06

本文用于验证,在erlang中 一个进程可以控制多个socket通信。验证程序如下:

-module(test_tcp).-compile(export_all).-include_lib("kernel/include/inet.hrl").-define(TCP_OPTIONS, [binary, {packet, 0}, {active, once}, {exit_on_close, true}, {reuseaddr, true} ]).test() ->Pid = spawn_link(?MODULE, loop, []),{ok, Listen} = gen_tcp:listen(6099, ?TCP_OPTIONS),loop_listen(Listen, Pid).loop_listen(Listen, Pid) ->{ok, Sock} = gen_tcp:accept(Listen),gen_tcp:controlling_process(Sock, Pid),loop_listen(Listen, Pid).loop() ->receive {tcp, Sock, Bin} ->io:format("rcv from ~p: ~p", [Sock, Bin]),inet:setopts(Sock, [{active, once}]),loop()end.


启动本脚本;外界可以连接6099端口,发送数据。可以看到,不同的连接发送的数据,被同一个控制进程捕获到。



原创粉丝点击