繁体   English   中英

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

[英]How can I send an instance over a socket connection?

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

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

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

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

任何建议将不胜感激。

在某种程度上,必须进行序列化才能通过连接发送对象。 我只能假设您对不允许使用序列化的评论指的是无法使用Serializable而不是全面禁止序列化(这没有任何意义)。 实现此目的的一种非常简单的方法是使用外部序列化库,例如gson Gson将对象序列化为JSON字符串,您可以通过套接字传输该字符串,然后使用相同的库将其反序列化为另一端的对象。 您当然可以使用您喜欢的格式的任何首选序列化库,例如。 XML,json,YAML,......

您不会发送Response类本身的实例。 通过网络发送内容时,客户端和服务器计算机可以理解字节。 您的应用程序可以理解多于字节,它可以理解特定的表示。 例如,您的服务器可能会发送您的Response类的JSON表示,如:

{
   "response" : {
       "code":404
   }
}

然后您的客户端必须能够理解这个字节序列的含义。 这基本上就是一个协议:两台机器如何通信。

无论服务器或客户端使用何种语言编写,响应都是实体。 在Java中,您可以使用Class来表示它,在C ++中您可以使用struct 但是,两者都需要知道,当您与外部应用程序系统进行通信时,他们必须将其置于每个人都能理解的格式中,无论是json,xml还是其他任何格式。

至于通过套接字发送这个,Oracle 在这里有一个很好的教程 您从套接字获取OutputStream并开始编写表示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM