服务器
%% @author
-module(aa_server).
-export([start_server/0,loop/1,server_send/1]).
start_server()->
%%创建ets表
ets:new(tcpname, [set,public,named_table]),
{ok,Listen} = gen_tcp:listen(2345, [binary,{packet,4},{reuseaddr,true},{active,true}]),
spawn(fun() -> par_contect(Listen) end).
%%连接
par_contect(Listen) ->
{ok,Socket}=gen_tcp:accept(Listen),
ets:insert(tcpname, {socket,Socket}),
spawn(fun() -> par_contect(Listen) end),
Pid=spawn(fun() -> loop(Socket) end),
gen_tcp:controlling_process(Socket, Pid).
%%server端发送信息
server_send(Str)->
Socket=ets:lookup_element(tcpname,socket,2),
gen_tcp:send(Socket, term_to_binary(Str)),
io:format("server say to client ~p~n",[Str]).
loop(Socket) ->
receive
{tcp,Socket,Bin} ->
Str = binary_to_term(Bin),
io:format("from Server receive ~p~n",[Str]),
loop(Socket);
{tcp_closed,Socket}->
io:format("from Server closed ~n")
end.
客户端
%% @author
-module(bb_client).
-export([client_send/1,loop/1,tcp/0]).
%%连接
tcp()->
%%把socket保存进tcpname1表
ets:new(tcpname1, [set,public,named_table]),
{ok,Socket} = gen_tcp:connect("localhost", 2345,[binary, {packet, 4}]),
ets:insert(tcpname1, {socket,Socket}),
%%把socket的控制权交给loop函数
Pid=spawn(fun() -> loop(Socket) end),
gen_tcp:controlling_process(Socket, Pid).
%%客户端发送信息
client_send(Str) ->
%%获得套接字
Socket=ets:lookup_element(tcpname1,socket,2),
%% ets:new(tcpname1, [set,public,named_table]),
gen_tcp:send(Socket, term_to_binary(Str)),
%% spawn(fun() -> loop(Socket) end),
io:format("client say to server1111 ~p~n",[Str]).
%%循环开启接受信息
loop(Socket)->
receive
{tcp,Socket,Bin} ->
Val = binary_to_term(Bin),
io:format("from client receive ~p~n",[Val]),
loop(Socket)
end.
启动服务器 :aa_server:start_server().
连接客户端:bb_client:tcp().
然后就可以愉快的互怼了
bb_client:client_send("I am so handsome").
aa_server:server_send("you are lie").