使用java通过套接字进行通信的最佳方式是什么 - 架构

时间:2015-11-29 18:59:10

标签: java sockets client-server serversocket

我是套接字编程的新手。

高级目标:

我正在构建软件开发软件。它将包含一个运行对象模型的服务器和一个允许开发对象模型的编辑器(客户端)。使用对象模型的软件客户端将会更晚。

通讯:

我有一个简单的服务器,可以从终端访问服务器。我需要知道的是将客户端操作传达给服务器的最佳方式。我还没有开发客户端,但我现在想要考虑通信。例如,如果我在编辑器中创建一个新对象,那么我需要将它传达给对象模型所在的服务器。服务器包含类方法等来执行此操作。我已经可以在主方法中完成所有操作。

最终,我可以将文本发送到服务器并具有一个命令结构,这些命令可以转换为执行特定操作的服务器,例如创建对象类型。在考虑这个时,我立即设想了一个讨厌的if if语句,用于在通过套接字通信读取字符串时所需的所有命令。我几乎没有这个领域的经验,我的研究(我可能会错误地提出错误)一直让我接受套接字信息。我现在有套接字设置我想现在通过套接字进行通信的最佳实现方法。我相信那里有标准。

问题:

我无法想象这是与套接字的java服务器通信的最佳方式(为命令解析字符串输入)。我不太了解编码器,解码器等等。但是我认为这个问题在没有讨厌的情况下已经解决了,否则如果要弄清楚客户端正在尝试什么命令。实现这种沟通的最佳可扩展方式是什么?

架构就是我的要求。我想自己做研究,但我的搜索空手而归。我是否应该研究与通信架构有关的特定术语?我搜索了以下内容(我可能使用了错误的关键字):

“套接字java的通信标准”

“为套接字java实现通信协议”

“套接字java上的二进制通信标准”

示例:

我使用Key(POJO)对象来实现对象类型,属性,实例,关系和方法。因此,如果我执行了在类型公司上创建新方法的操作,那么服务器需要以下信息来处理此请求:

NewMethod(命令),对象类型的Key,Name,body,boolean settings,arguments [],return type Key

鉴于这种结构,我可以拥有数百个命令,因此会有大量的字符串解析。

1 个答案:

答案 0 :(得分:1)

我找到了答案 - 在TCP套接字上工作,然后需要定义客户端和服务器之间的通信。天空才是极限。我对定义此通信的一些方法感兴趣。

我找到了SOF Question,其中有人问了一个非常相似的问题。

最后,您将创建数据包定义协议。例如,数据可以具有以下模式:

[command:arguments[] ]

请参阅解释示例的链接。

编辑:

我发现的与我所看到的有关的其他东西叫做协议缓冲区。 Google为此提出了一个很好的解决方案。它解决了我所询问的确切问题。我再次认为我对主题事项的了解不够,不能使用正确的术语,也没有足够好地描述它以便其他人正确回答这个问题。希望这能帮助处于同样情况的其他人。