Socket技术,实现Http协议和游戏服务器协议(Java代码)
副问题[/!--empirenews.page--]
在收集技能中,前后端通信是一个难点,也是一个处事器措施员必需攻陷的技能瓶颈。在两台计较神秘实现信息交互,就必要一种技能来说,而两台计较机网卡来实现,无非就是两种技能UDP和TCP,个中,两种技能因为差异的特征,行使在差异的处所,在一些不要求高达到型传输规模(如:视频)行使UDP之外,90%的通信都是通过TCP协议来传输,因为其靠得住的安详到达性。 在措施员眼里,不消太想相识网卡是通过5层协议(可能说3层协议)怎么实现tcp通信,在编程说话里socket就是tcp的代名词(也许有点禁绝备哈,可是我小我私人是这样以为的)。 我们先用一个简朴的http协议中get案例来说,让各人更好领略游戏前后端的通信协议指定。 以下为java代码:
重点声名一下整个socket发送内容:http协议回收“rn”作为解码器支解标记,这个协议的二进制流包罗包头和包体两个部门,哀求协议详细内容: 包头:
行使空格支解成三个信息1、哀求方法(一把城市用两张get和post) 2、哀求路径 3、回收http1.1协议
回收key:value的方法向处事器提交信息。Content-Length很重要,用于处事器读取包体的长度。
再用“rn”来声名http包头信息竣事,后头的字节约是包头内容
这个声名哀求包体竣事 这里根基上一个http协议哀求协议竣事,然后我们再来看看处事器http相应信息,也是包罗包头和包体,包体有点变革的是第一个排“HTTP/1.1 200 OKrn” 也是三部门信息,返回协议,状态码和状态(http中200就是乐成相应的意思),除此以外也是也是key:value值了。也是回收持续的两个“rn”来支解包头和包体字节约。包体就没有什么好说了,就是一些html、css、js代码,也就我们现适用户能望见的网页代码。 附图如下: 看完了上面的http协议,我们就可以领略我接下来要声名我在以是游戏项目处事器计划的协议,我们游戏项目因为成果必要,都是回收tcp长毗连,处事器必要按时向游戏前端发送差异指令和相应前端哀求,以是必要一个严谨高效的通信协议: 包头
包体
用意声名:包头含有四个重要信息,第一个是包头开始辨认码,用于处事器在轮回读取socket管道信息时,发明新包开始。第二个是呼吁编号,就是前来哀求处事器的举措指令(如:"1"用户登入验证,“2”为击杀呼吁),处事器会自动去挪用相应模块代码。第三部门是这个包独一码,用于防备前端一再提交包,造成处事器营业逻辑错误。第四部门,就是包体字节约长度。这样,每一个包头牢靠长度为14字节,而包体是无关紧要的,取决于挪用呼吁是否是必要前端转达参数。 (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |