1

我是一名 Delphi 开发人员,最近我决定将我的一个程序移植到 java,我正在用 java 做服务器端程序以使其跨平台。

在 Delphi 中,我可以通过 TCP 轻松地将记录作为字节数组发送,但我在 java 方面没有太多经验,我不知道如何以一种简单但适度的方式来完成它。这是我的数据记录的示例:

type
  Tlogin = record
    username : string[50];
    password : string[50];
    version  : word;
  end;

我只是简单地把这种类型的记录做成一个字节数组后发送。

任何想法如何在 java 中制作此类数据记录以及如何设置字符串的大小,或者任何更好的建议来处理字符串以通过 TCP 发送它们。

4

1 回答 1

0

在 Java 中,您只需通过客户端和服务器之间的套接字发送对象,并且有多种方法可以做到这一点。如需相关参考,请访问

通过 Java 套接字发送对象

有关更多分步示例,请访问以下链接:

JGuru - 通过套接字发送对象

在您的情况下,您的对象将如下所示

class TLogin implements Serializable
{

   private String userName;
   private String password;
   private int version;

   //implement your objects methods below


}

对象中不想参与序列化和反序列化的字段可以标记为瞬态

有关序列化的详细分步示例,请访问 Java 序列化示例

根据提供给我之前回复的评论进行编辑。

简单来说序列化:这是一种技术,其中 Java 对象被转换为字节序列(本质上,对象的所有字段,除了那些标记为瞬态的字段都是该字节序列的一部分)。然后可以使用此字节序列在稍后的时间点重新构造对象。通过序列化对象获得的字节序列可以保存到存储中,也可以通过网络通道传输,以便在稍后阶段重新构造对象。序列化是 Java 客户端服务器环境中使用 RMI、套接字或 SOAP 发生的许多通信协议的核心。

谈到了序列化,我们来到了客户端-服务器问题。如果计划只是将服务器端代码移植到 Java,那么您可以使用以下选项来启用客户端和服务器之间的通信:

  1. 设计服务器以使用 SOAP/REST 与 Delphi 客户端进行通信。
  2. 使用包含有关所存储数据的长度和类型的信息的标头数据结构来扩充您的记录,并在服务器端的客户端传输字节序列中使用此标头来重新构建对象。

但是,在我看来,第一种方法比第二种方法更好,因为

  1. 它是一种标准的可互操作技术。如果以后您希望将客户端移植到其他语言,如 C# 或 Python,则无需更改服务器。
  2. 它让 Web 服务基础架构能够处理 SOAP/REST 序列化的细节,并让您专注于业务逻辑

我希望这个冗长的答案能为您指明解决方案的方向

于 2013-07-13T18:52:12.057 回答