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