Erlang socket编程 基础(一)

本文介绍了Erlang中的TCP套接字编程基础知识,包括服务器和客户端的工作方式,一个简单的连接案例,以及active、passive和active once三种消息接收模式。通过示例展示了如何在Erlang中建立和管理TCP连接,强调了消息模式在控制数据流中的重要性。
摘要由CSDN通过智能技术生成

前言

发现erlang 网络编程部分的博客写得都挺多的,但比较缺比较全的总结,所以打算写一篇从基础案例到做个游戏网关的文章。erlang 提供了tcp/udp 套接字编程,本系列只讲Tcp相关

 

服务器和客户端工作方式

服务器

首先,我们打开shell调用 gen_tcp:listen (Port,option)进行监听套接字

1> {ok, ListenSocket} = gen_tcp:listen(8088, [binary,{active,true},{packet,0}]).
{ok,#Port<0.508>}
2> {ok,Sokcet} = gen_tcp:accept(ListenSocket).

这里8088是监听端口,binary里表示接收的是二进制串,{active,true}是主动模式,socket收到消息以{tcp, Socket, Data} | {tcp_closed, Socket} 主动投递给进程。,{packet,N},N是包头的长度,以字节为单位,包头会被自动添加和解析,这个参数关系到是否会粘包(事实上socket是没有粘包这种概念的,很多新手因为这个词都会被搞得云里雾里的,TCP本来就是基于字节流而不是消息包的协议,正确的解读应该是应用层协议的解析,这个后面我再讲),N为0时包头长度为0

返回监听套接字后我们需要调用gen_tcp:accept(ListenSocket)等待接收连接,在没有客户端连接之前,是堵塞的,Socket是不会返回的,shell会卡住。用accept/2的话有一个timeout参数 ,超时没有连接会关闭  

客户端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值