如何通过套接字连接发送实例?

时间:2013-03-22 15:38:47

标签: java class sockets instance

我正在尝试编写两个Java程序。 一个模拟服务器,一个模拟客户端。

我怎样才能通过套接字发送Response类的实例?

Response类表示服务器连接的状态代码。例如404 Not Found等

遗憾的是,我不允许使用序列化。

非常感谢任何建议。

2 个答案:

答案 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 从套接字开始写你的表示。