我有一个多线程服务器,正在等待套接字连接。
第一次交换消息的类型总是相同的,客户端发送一个带有身份验证详细信息(userid/pwd)的对象,服务器对其进行检查并在身份验证是否通过时回复服务器。
在第一次消息交换之后,客户端将发送一些请求,对应于服务器能够执行的各种任务。我如何为这些异类请求建模?特别是我的问题是关于使用 InputObjecStream/OutputObjectStream 在客户端和服务器之间发送的对象类型
我有两个想法:
使用“通用消息”对象,具有 2 个属性:任务标识符和没有泛型的 HashMap,能够携带执行任务所需的各种类型的参数。
每种类型的任务都有一个对象,这个解决方案“更干净”,但是我不知道如何让服务器了解接收到的消息的类型,我想到了从客户端接收到的消息的一系列对象转换到每个可能的“特定任务消息”,忽略许多 CastException。这听起来很糟糕,有什么办法可以避免这种情况吗?