gpt4 book ai didi

java - 在java中通过TCP发送数据记录

转载 作者:可可西里 更新时间:2023-11-01 02:54:44 26 4
gpt4 key购买 nike

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

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

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

在将这种类型的记录制成字节数组后,我会简单地发送它。

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

最佳答案

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

Sending objects over Java sockets

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

JGuru - Sending objects over a socket

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

class TLogin implements Serializable
{

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

//implement your objects methods below


}

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

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

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

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

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

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

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

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

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

关于java - 在java中通过TCP发送数据记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17633067/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com