emqx私有tcp协议服务器开发---emqx-tcp.hrl

-define(APP, emqx_tcp).

%% 65535 Bytes 最大报文定义
-define(MAX_PACKET_SIZE, 16#ffff).

%% 协议版本
-define(TCP_PROTO_V1, 1).

%% tcp 连接报文{客户id,连接保活,用户,密码,版本}
-record(tcp_packet_conn, {client_id, keepalive, username, password, version}).
%% tcp连接回复报文
-record(tcp_packet_connack, {code, msg}).

%% tcp数据报文{长度,数据内容}
-record(tcp_packet_datatrans, {length, data}).
%% ping报文
-record(tcp_packet_ping, {}).
%% pong报文
-record(tcp_packet_pong, {}).
%% 断开连接报文
-record(tcp_packet_disconn, {}).

%% 定义数据帧根据Pkt连判断是什么报文
-define(FRAME_TYPE(Pkt), begin
                             case tuple_to_list(Pkt) of
                                 [tcp_packet_conn|_]      -> conn;
                                 [tcp_packet_connack|_]   -> connack;
                                 [tcp_packet_datatrans|_] -> datatrans;
                                 [tcp_packet_ping|_]      -> ping;
                                 [tcp_packet_pong|_]      -> pong;
                                 [tcp_packet_disconn|_]   -> disconn
                             end
                         end).

%%------------------------------------------------------------------------------
%% Protocols Defination

-define(FRAME_TYPE_CONN,      1). %% 连接
-define(FRAME_TYPE_CONNACK,   2). %% 连接确认
-define(FRAME_TYPE_DATATRANS, 3). %% 数据传输
-define(FRAME_TYPE_PING,      4). 
-define(FRAME_TYPE_PONG,      5).
-define(FRAME_TYPE_DISCON,    6). %% 断开连接

-define(CONNACK_SUCCESSFUL, 0). %% 成功
-define(CONNACK_AUTHFAILED, 1). %% 授权失败
-define(CONNACK_ILLEGALVER, 2). %% 非法

从emqx_tcp_app 开发分析,然后分析emqx-tcp.hrl 头文件,接下来分析emqx_tcp_sup.erl 模块。

猜你喜欢

转载自blog.csdn.net/qq513036862/article/details/110271644