【AIGC】没有公网 IP 的聊天器,和它一点点长出来的协议
一个人从 2014 到 2018 断断续续写过八个聊天器,中间有一段他自己在归档时从没打开过。这次翻出来的就是那段里的一对:一个客户端、一个服务端,日期都是 2017-10-05。方法还是那套——易语言不用装 IDE 也能把 .e 读成文本,怎么读、读出来哪些是工具塞进去的噪音,另一篇讲容器的已经写了。这里只谈读出来的东西本身:一个很小的 IM 协议,是怎么在这个版本里成形,又跟前后差在哪。 协议的全部,就几行 客户端连上服务器,服务器第一件事是把这条连接的客户标识用一行 IP=<标识> 发回去。这个标识是服务器眼里这条连接本身(就是连接地址),不是什么令牌。从这一刻起,客户端往后发的每一行都以这个标识开头,格式就是空格隔开的 <标识> <命令> <参数…>。服务端拿空格一切,第二段是要干什么: /reg 用户名 密码 注册 /login 用户名 密码 登录 /w 对象 内容 发消息;对象写 all 就群发,否则私聊 /gxIP 用户名 把新地址重新绑回这个用户名之前那次登录 服务器往下只有三种东西:IP= 那种标识下发、登录成功 <用户名>、以及 /List 后面跟一串在线用户名。登录成功 回给客户端的同时,服务器把这对用户丢进两个平行数组,一个存标识、一个存显示名;客户端把收到的用户名当成显示名存下来,界面里发消息就从这个数组挑。注意这一版里显示名是被账号绑死的:登录回来是什么用户名,马甲就是什么,没有登录时临时选一个的余地。 ...