我正在尝试编写两个 Java 程序。一个模拟服务器,一个模拟客户端。
我怎样才能通过套接字发送 Response 类的实例?
Response 类表示服务器连接的状态代码。例如 404 Not Found 等
不幸的是,我不允许使用序列化。
任何建议将不胜感激。
在某种程度上,为了通过连接发送对象,必须进行序列化。我只能假设您关于不允许使用序列化的评论是指无法使用 Serializable 而不是全面禁止序列化(这没有意义)。实现此目的的一个非常简单的方法是使用外部序列化库,例如gson。Gson 将对象序列化为 JSON 字符串,您可以通过套接字传输该字符串,然后使用相同的库将其反序列化回另一端的对象。您当然可以使用任何您喜欢的序列化库和您喜欢的格式,例如。XML、json、YAML、...
您不会发送 Response 类本身的实例。当通过网络发送东西时,客户端和服务器机器理解字节。您的应用程序可以理解的不仅仅是字节,它还可以理解特定的表示。例如,您的服务器可能会发送您的 Response 类的 JSON 表示,例如:
{
"response" : {
"code":404
}
}
那么你的客户必须能够理解这个字节序列的含义。这基本上就是协议的本质:两台机器如何通信。
无论服务器或客户端是用什么语言编写的,响应都是一个实体。在 Java 中你可以使用 aClass
来表示它,在 C++ 中你可以使用struct
. 但是,双方都需要知道,当您与外部 application.system 进行通信时,他们必须将其置于每个人都能理解的格式中,无论是 json、xml 还是任何其他格式。
至于通过套接字发送这个,Oracle 有一个很好的教程在这里。您OutputStream
从套接字中获取并开始编写您的表示。