这就是我在Java socket编程中所做的事情,一种大家都在谈论的自定义协议吗?

这就是我在Java socket编程中所做的事情,一种大家都在谈论的自定义协议吗?,java,sockets,network-programming,protocols,Java,Sockets,Network Programming,Protocols,我正在开发一个Java socket程序,它可以托管一个基于回合的在线游戏 因此,首先让我感到困惑的是,服务器和前端之间的通信是如何工作的 因为在每个请求/响应中,我需要知道事件,状态,数据,以处理游戏逻辑 用户创建发送消息的文件室时,包含: 事件:createRoom 状态:请求 数据:房间名 因此,首先我选择使用JSON,但是在解析它时有一些不方便的地方(我需要首先解析json中的event属性,以了解它是什么类型的数据) 最后我改变了方式,而不是JSON。 我只是简单地将事件、状态和数据连

我正在开发一个Java socket程序,它可以托管一个基于回合的在线游戏

因此,首先让我感到困惑的是,服务器和前端之间的通信是如何工作的

因为在每个请求/响应中,我需要知道事件状态数据,以处理游戏逻辑

用户创建发送消息的文件室时,包含:

事件createRoom
状态请求
数据房间名

因此,首先我选择使用
JSON
,但是在解析它时有一些不方便的地方
(我需要首先解析json中的event属性,以了解它是什么类型的数据)

最后我改变了方式,而不是JSON。 我只是简单地将事件、状态和数据连接在一个字符串中,然后使用
xox
将它们分开

有些东西看起来像:
createRoomXOXOXrequestXOXOX{“名称”:“roomName”}

解析这将比解析JSON容易得多

每个人都在谈论自定义协议,但我对网络知之甚少,我所做的是一种简单的自定义协议吗?

本质上,一切(在数据通信中)都是一种“自定义协议”,它是在其他“标准”和/或“自定义”低层协议之上分层的。这没有什么不寻常的,这是数据通信的本质

Tim Berners Lee“发明”HTTP的那一天,它是一个新的自定义协议,位于TCP之上,位于IP之上,位于。。。(这里有一些选择,具体取决于底层数据链路和物理层)。它现在已经成为一种标准,因为很多人最终都在使用它,来自不同植入者的客户端和服务器之间的互操作性非常重要


如果您的协议要解决一个重要的未决问题,并且很多人认为它值得使用,那么它(理论上)可以成为一个事实上的标准,然后可以被一个国际标准机构采用,这可能是好事,也可能是坏事

我做的是一种简单的定制协议吗?是的,是的,虽然这不是什么新鲜事。早在20世纪80年代,他们就使用了这种协议。我想你有一种数据格式,而不是协议,但我想这是吹毛求疵。正如我相信您所理解的,您的格式/协议的问题在于,如果数据中出现xox,它将失败。这可能看起来不太可能,但令人惊讶的是,这样的设计决策在几年后又再次困扰着你。无论如何,在我看来,Java中解析JSON和XML的好方法太多了,根本不需要发明新的基于文本的数据格式。当然,只有我的0.02美元。