首页 > 代码库 > 2.基础知识,Erlang gen_tcp 案例
2.基础知识,Erlang gen_tcp 案例
1.客户端和服务端互联案例,举例中客户端和服务端都是用Erlang
服务端
1 server() -> 2 LSock = listen(), %监听本机的某个端口 3 {ok, Sock} = gen_tcp:accept(LSock), %保持监听状态,程序会停在这一步,直到有客户端连接上 4 {ok, Bin} = do_recv(Sock, []), %接收参数 5 ok = gen_tcp:close(Sock), %关闭这个监听 6 Bin. 7 8 %%监听本机的5678端口,发送的数据超过4字节才被接收 9 listen() ->10 {ok, LSock} = gen_tcp:listen(5678, [binary, {packet, 4},11 {active, false}]),12 LSock.13 14 %%接收参数,两种情况15 %%1.如果客户端一直发送消息,尾递归调用一直接收消息16 %%2.如果客户端关闭连接,返回{ok, Data}17 do_recv(Sock, Bs) ->18 case gen_tcp:recv(Sock, 0) of19 {ok, B} ->20 do_recv(Sock, [Bs, B]);21 {error, closed} ->22 {ok, list_to_binary(Bs)}23 end.
客户端
SomeHostInNet = "localhost", %%服务器IP {ok, Sock} = gen_tcp:connect(SomeHostInNet, 5678, [binary, {packet, 0}]), %连接上服务器, %%服务器端表现: %%1.在连接上服务器之前,服务端一直停在gen_tcp:accept(LSock), %%2.链接上服务器之后,服务端程序继续执行, %%3.执行到do_recv(Sock, []),又会处于监听状态(此时监听客户端发送的数据) ok = gen_tcp:send(Sock, "Some Data"), %发送数据,这一步可以发送很多消息 ok = gen_tcp:send(Sock, "Some Data2"), ok = gen_tcp:send(Sock, "Some Data3"), %%服务端表现:服务端一直处于接收消息状态 ok = gen_tcp:close(Sock). %关闭连接,此时服务端do_recv(Sock, [])执行完毕,继续往下执行gen_tcp:close(Sock)
2.基础知识,Erlang gen_tcp 案例
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。